5

node/express.jsアプリでエラーとイベントをログに記録するためにWinstonを使い始めました。

私が理解していないことの1つは、さまざまな環境(Dev / Test / Production)に対してさまざまなWinstonトランスポート(または他の構成)を指定する方法です。たとえば、開発環境のコンソールにすべてを記録したいのですが、本番環境では別のトランスポートを使用します。

誰もがこれを行う方法を知っていますか?

4

1 に答える 1

9

私の知る限り、これを行う「標準的な」方法はありませんが、次のようにすることができます。

var myLogTransports = [];

if (process.env.NODE_ENV == 'production') {
  myLogTransports.push(new (winston.transports.File)({ filename: 'somefile.log' }));
}
else {
  myLogTransports.push(new (winston.transports.Console)({ level: 'error' })));
}

var logger = new (winston.Logger)({
  transports: myLogTransports,
});

Winston は、ロガーの動的追加をサポートするようになりました。詳細については、「トランスポートの操作」セクションを参照してください。元の回答は次のように書き直すことができます。

var logger = new winston.Logger();

if (process.env.NODE_ENV == 'production') {
  logger.add(winston.transports.File, { filename: 'somefile.log' });
}
else {
  logger.add(winston.transports.Console, { level: 'error' });
}
于 2012-10-31T12:01:31.743 に答える