web-dev-qa-db-ja.com

winston:トランスポートなしでログを書き込もうとする-デフォルトのロガーを使用

エクスプレスアプリでウィンストン(2.x)のデフォルトロガーを設定するためのチュートリアルに従いました。 winstonの現在のバージョン(3.0.0)に更新するとき、トランスポートの追加に問題があります。 最新のドキュメント に従いましたが、それでもコンソールに通知が表示され、ログファイルはまったく作成されません。

[ウィンストン]トランスポートなしでログを書き込もうとしています

logging.js

const winston = require('winston');

module.exports = function () {

  const files = new winston.transports.File({ filename: 'logfile.log' });
  const myconsole = new winston.transports.Console();

  winston.add(myconsole);
  winston.add(files);

}

index.js

const winston = require('winston');
...

require('./logging');
winston.info("Give some info");

[winston]トランスポートなしでログを書き込もうとしている{"message": "Give some info"、 "level": "info"}

私は何を間違えていますか?

7
ekntrtmz

同様の問題もありました。正しく思い出せば、要件をindex.jsの関数として呼び出す必要がありました。

require('./logging')();
1
GCQ

Winston 3では、loggerオブジェクトを作成し、transportsを追加する必要があります。

Winston 3には多くの がありますが、 readme から適応するには、次のようにします:

const logger = winston.createLogger({
  level: 'info',
  format: winston.format.json(),
  transports: [
    new winston.transports.Console(),
    new winston.transports.File({ filename: 'logfile.log' })
  ]
});

logger.info('it works!!');
8
davewy

Winston v3でデフォルトのロガーを使用する場合は、このコードをメインファイルに追加するだけです。

const winston = require('winston')

winston.add(new winston.transports.File({ filename: 'logfile.log' }))