Node.js のログは、直接コンソールに出力されます。ログデータの収集およびトラブルシューティングには不便です。Log4js を使用すると、ログをファイルに出力し、ログフォーマットをカスタマイズすることができます。データの収集にも運用にも便利です。
var log4js = require('log4js');
log4js.configure({
appenders: [
{
type: 'file', //file output
filename: 'logs/access.log',
maxLogSize: 1024,
backups:3,
category: 'normal'
}
]
});
var logger = log4js.getLogger('normal');
logger.setLevel('INFO');
logger.info("this is a info msg");
logger.error("this is a err msg");
ログフォーマット
Log4js を使用してログデータをテキストファイルに保存する場合、ファイルに出力されるログフォーマットは、次のとおりです。
[2016-02-24 17:42:38.946] [INFO] normal - this is a info msg
[2016-02-24 17:42:38.951] [ERROR] normal - this is a err msg
Log4js には、trace、debug、info、warn、error、および fatal の 6 つの出力ログレベルがあります (後者ほどより深刻)。
Logtail を使って Node.js ログを収集
Logtail を使用して Node.js ログを収集する方法については、「Python ログ」をご参照ください。ネットワーク構成およびネットワーク設定に適した設定を選択します。
自動生成される正規表現は、ログサンプルのみを基にしており、すべてのログフォーマットに対応しているわけではありません。したがって、正規表現が自動生成されたら、修正を加える必要があります。以下の Node.js ログサンプルを参考に、ログに必要な正規表現を記述します。
一般的な Node.js ログとその正規表現は、以下のとおりです。
- ログサンプル 1
- ログサンプル
[2016-02-24 17:42:38.946] [INFO] normal - this is a info msg
- 正規表現
\[([^]]+)]\s\[([^\]]+)]\s(\w+)\s-(. *)
- 抽出フィールド
time
、level
、loggerName
、およびmessage
- ログサンプル
- ログサンプル 2
- ログサンプル
[2016-01-31 12:02:25.844] [INFO] access - 42.120.73.203 - - "GET /user/projects/ali_sls_log? ignoreError=true HTTP/1.1" 304 - "http:// aliyun.com/" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_10_3) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/48.0.2564.97 Safari/537.36"
- 正規表現
\[([^]]+)]\s\[(\w+)]\s(\w+)\s-\s(\S+)\s-\s-\s"([^"]+)"\s(\d+)[^"]+("[^"]+)"\s"([^"]+). *
- 抽出フィールド
time
、level
、loggerName
、ip
、request
、status
、referer
およびuser_agent
- ログサンプル