Winston
でlogger
を試しました。 1つのプロジェクトで使用しました。コードをコピーして既存のプロジェクトに貼り付けると、TypeError: winston.Logger is not a constructor
などの問題に直面するよりもうまく機能します
let logger = new(winston.Logger)({^
TypeError:winston.Loggerはコンストラクターではありません
このエラーの理由と、この問題を解決するために何をしなければならないのかを教えてください。
「morgan」:「^ 1.9.0」、「winston」:「^ 3.0.0」
logger.js
ファイルのコードは次のとおりです。
var appRoot = require('app-root-path');
var winston = require('winston');
var options = {
file: {
level: 'info',
name: 'file.info',
filename: `${appRoot}/logs/app.log`,
handleExceptions: true,
json: true,
maxsize: 5242880, // 5MB
maxFiles: 100,
colorize: true,
},
errorFile: {
level: 'error',
name: 'file.error',
filename: `${appRoot}/logs/error.log`,
handleExceptions: true,
json: true,
maxsize: 5242880, // 5MB
maxFiles: 100,
colorize: true,
},
console: {
level: 'debug',
handleExceptions: true,
json: false,
colorize: true,
},
};
// your centralized logger object
let logger = new (winston.Logger)({
transports: [
new (winston.transports.Console)(options.console),
new (winston.transports.File)(options.errorFile),
new (winston.transports.File)(options.file)
],
exitOnError: false, // do not exit on handled exceptions
});
あなたが言及したように、あなたは3.0.0
を使用しています、winston.Logger
を使用することはできません、あなたはライブラリコードを参照することができます( https://github.com/winstonjs/winston/blob/master/ lib/winston.js#L178 )
コードを少し更新する必要があります。new (winston.Logger)
の代わりにwinston.createLogger
を使用します
// your centralized logger object
let logger = winston.createLogger({
transports: [
new (winston.transports.Console)(options.console),
new (winston.transports.File)(options.errorFile),
new (winston.transports.File)(options.file)
],
exitOnError: false, // do not exit on handled exceptions
});