J'ai essayé avec Winston
pour logger
. J'ai utilisé dans un projet leur. Cela fonctionne bien lorsque je copie le code de leur projet actuel que je rencontre un problème comme TypeError: winston.Logger is not a constructor
let logger = new (winston.Logger) ({^
TypeError: winston.Logger n'est pas un constructeur
Merci de me guider, Pourquoi cette erreur et que devrais-je faire pour résoudre ce problème?.
"morgan": "^ 1.9.0", "winston": "^ 3.0.0"
Voici mon code dans le fichier 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
});
Comme vous le mentionnez, vous utilisez 3.0.0
, vous ne pouvez pas utiliser winston.Logger
, vous pouvez vous référer au code de la bibliothèque ( https://github.com/winstonjs/winston/blob/master/ lib/winston.js # L178 )
Vous devez faire une petite mise à jour dans votre code, utilisez winston.createLogger
au lieu de new (winston.Logger)
// 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
});