はじめに
Node.jsのロギングツールのlog4jsはJavaのlog4jにちなんで名付けられたようです。たまたまlog4jsを使うアプリを触ったのですが、ロギングされた結果をsyslogに飛ばしたくなりました。
log4jではsyslogのAppenderを追加することができるのですが、log4jsはsyslogのAppenderがありません。
log4jsのsyslog Appender
log4jsからsyslogへログを流すsyslog Appenderはいくつかあるようです。今回はMITライセンス表記されていて使いやすそうなlog4j-syslog-appenderを利用しました。以下のコマンドでインストールします。
$npm install log4js-syslog-appender -save
log4jsの設定ファイルに以下の設定を行います。今回はnpmのページに記載のある設定を記載しました。このページではappenderが1つの設定になっていますが、appendersとリストで渡すことで、複数のAppenderを設定することができます。syslogで他のサーバにログを転送しつつ、ローカルのファイルに保存することもできます。
"appenders": [
{
"type": "log4js-syslog-appender",
"tag": "YOUR LOG TAG",
"facility": "local0",
"hostname": "localhost",
"port": 514,
"transport": "UDP"
}
]
また、log4js-syslog-appenderはUDPの他にsocket(TCP?)での転送もできるようです。
上記設定後、localhostのsyslog.confまたはrsyslog.confの設定を変更しましょう。
localhostが転送先のサーバになっていれば転送先のサーバに設定します。
私は一度ローカルのrsyslogサーバに送り、ログを集約し、そこから転送先のサーバに転送するように設定し検証しました。