通常のエラー/イベントなどを既に処理しているだけでなく、アプリでパフォーマンス ログを処理するために winston-loggly をセットアップしようとしています。ロガーのセットアップ:
var winston = require('winston');
require('winston-loggly');
winston.setLevels({ error: 0, warn: 1, info: 2, verbose: 3, debug: 4, silly: 5 });
winston.addColors({
silly: 'magenta',
verbose: 'cyan',
debug: 'blue',
info: 'green',
warn: 'yellow',
error: 'red'
});
winston.remove(winston.transports.Console);
winston.add(winston.transports.Console, {
level: 'silly',
prettyPrint: true,
colorize: true,
silent: false,
timestamp: true
});
winston.add(winston.transports.Loggly, {
token: "MY-TOKEN",
subdomain: "MY-SUBDOMAIN",
tags: ["Winston-NodeJS"],
json:true
});
module.exports.info = function(message, arg){
winston.log('info',message, arg);
};
module.exports.error = function(message, arg){
winston.log('error', message, arg);
};
module.exports.warn = function(message, arg){
winston.log('warn', message, arg);
};
module.exports.debug = function(message, arg){
winston.log('debug', message, arg);
};
module.exports.winston = winston;
次に、各ルートのパフォーマンスをキャプチャするために、メインの app.js で loggly にパイプできる Morgan を使用しています。
var theHTTPLog = morgan("dev", {
"stream": {
write: function(str) {
logger.info(str, null);
}
}
});
app.use(theHTTPLog);
ただし、これにより、モーガンの出力は通常のアプリの出力と同じように汚染されたままになります。モーガンのすべての出力をログに送信するときに「パフォーマンス」のタグを付けて、それを分離し、ルートのパフォーマンスに関する統計を取得するために集計する方法を見つけたいと考えています。ログ時にタグを割り当てるにはどうすればよいですか?