Winston Logger 中的冗余
Redundancy in Winston Logger
因为除了文件名之外,下面的代码中有冗余...请建议我减少它的方法,因为我对节点 js 很陌生。从我的应用程序调用记录器时如何将文件名作为参数传递。
const loggerForDWTApps = createLogger({
level: loggerLevel === 'undefined' ? 'debug' : loggerLevel,
format: format.combine(
format.timestamp({
format: 'YYYY-MM-DD HH:mm:ss'
}),
format.printf(info => `${info.timestamp} ${info.level}: ${info.message}`)),
transports: [new transports.File({ filename: path.join(logDir, 'XYZ.log') })
]
});
const loggerForDWTService = createLogger({
level: loggerLevel === 'undefined' ? 'debug' : loggerLevel,
format: format.combine(
format.timestamp({
format: 'YYYY-MM-DD HH:mm:ss'
}),
format.printf(info => `${info.timestamp} ${info.level}: ${info.message}`)),
transports: [new transports.File({ filename: path.join(logDir, 'ABC.log') })
]
});
写一个函数,调用如下:
function getWinstonConfig(fileName) {
return {
level: loggerLevel === 'undefined' ? 'debug' : loggerLevel,
format: format.combine(
format.timestamp({
format: 'YYYY-MM-DD HH:mm:ss'
}),
format.printf(info => `${info.timestamp} ${info.level}: ${info.message}`)),
transports: [new transports.File({ filename: path.join(logDir, '${fileName}.log')})]
}
}
const loggerForDWTApps = createLogger(getWinstonConfig('ABC'));
const loggerForDWTService = createLogger(getWinstonConfig('XYZ'));
我建议创建一个函数,比如 createLoggerWrapper,它接受您的记录器配置的任何不同参数。
例如:
function createLoggerWrapper(logFile) {
return createLogger({
level: loggerLevel === 'undefined' ? 'debug' : loggerLevel,
format: format.combine(
format.timestamp({
format: 'YYYY-MM-DD HH:mm:ss'
}),
format.printf(info => `${info.timestamp} ${info.level}: ${info.message}`)),
transports: [new transports.File({ filename: path.join(logDir, logFile) })]
});
}
const loggerForDWTApps = createLoggerWrapper('XYZ.log');
const loggerForDWTService = createLoggerWrapper('ABC.log');
因为除了文件名之外,下面的代码中有冗余...请建议我减少它的方法,因为我对节点 js 很陌生。从我的应用程序调用记录器时如何将文件名作为参数传递。
const loggerForDWTApps = createLogger({
level: loggerLevel === 'undefined' ? 'debug' : loggerLevel,
format: format.combine(
format.timestamp({
format: 'YYYY-MM-DD HH:mm:ss'
}),
format.printf(info => `${info.timestamp} ${info.level}: ${info.message}`)),
transports: [new transports.File({ filename: path.join(logDir, 'XYZ.log') })
]
});
const loggerForDWTService = createLogger({
level: loggerLevel === 'undefined' ? 'debug' : loggerLevel,
format: format.combine(
format.timestamp({
format: 'YYYY-MM-DD HH:mm:ss'
}),
format.printf(info => `${info.timestamp} ${info.level}: ${info.message}`)),
transports: [new transports.File({ filename: path.join(logDir, 'ABC.log') })
]
});
写一个函数,调用如下:
function getWinstonConfig(fileName) {
return {
level: loggerLevel === 'undefined' ? 'debug' : loggerLevel,
format: format.combine(
format.timestamp({
format: 'YYYY-MM-DD HH:mm:ss'
}),
format.printf(info => `${info.timestamp} ${info.level}: ${info.message}`)),
transports: [new transports.File({ filename: path.join(logDir, '${fileName}.log')})]
}
}
const loggerForDWTApps = createLogger(getWinstonConfig('ABC'));
const loggerForDWTService = createLogger(getWinstonConfig('XYZ'));
我建议创建一个函数,比如 createLoggerWrapper,它接受您的记录器配置的任何不同参数。
例如:
function createLoggerWrapper(logFile) {
return createLogger({
level: loggerLevel === 'undefined' ? 'debug' : loggerLevel,
format: format.combine(
format.timestamp({
format: 'YYYY-MM-DD HH:mm:ss'
}),
format.printf(info => `${info.timestamp} ${info.level}: ${info.message}`)),
transports: [new transports.File({ filename: path.join(logDir, logFile) })]
});
}
const loggerForDWTApps = createLoggerWrapper('XYZ.log');
const loggerForDWTService = createLoggerWrapper('ABC.log');