我一直在使用winston npm模块在量角器中写入日志。一旦量角器代码已迁移到异步状态,等待,日志中就会出现许多同步问题。 (有多个未定义,零)。而且执行也要折腾。
我一直在研究如何配置Winston配置以支持异步等待格式,但是在这方面找不到任何东西。
use strict;
const { createLogger, format, transports } = require('winston');
require('winston-daily-rotate-file');
const fs = require('fs');
const path = require('path');
const env = process.env.NODE_ENV || 'test';
const logDir = 'log';
///#####loggging levels
//{ error: 0, warn: 1, info: 2, verbose: 3, debug: 4, silly: 5 }
// Create the log directory if it does not exist
if (!fs.existsSync(logDir)) {
fs.mkdirSync(logDir);
}
const dailyRotateFileTransport = new transports.DailyRotateFile({
filename: `${logDir}/%DATE%-results.log`,
datePattern: 'DD-MM-YYYY',
maxSize: '20m',
maxFiles: '14d'
});
const logger = createLogger({
// change level if in dev environment versus production
//level: env === 'development' ? 'info' : 'debug',
//giving level as silly so that all logs are added to the file.
level: env === 'development' ? 'info' : 'silly',
format: format.combine(
format.label({ label: path.basename(module.parent.filename) }),
format.timestamp({ format: 'DD-MM-YYYY HH:mm:ss'}),
format.printf(info => `${info.timestamp} ${info.level} [${info.label}]: ${info.message}`)
),
transports: [
new transports.Console({
level: 'info',
format: format.combine(
format.colorize(),
format.printf(
info => `${info.timestamp} ${info.level} [${info.label}]: ${info.message}`
)
)
}),
dailyRotateFileTransport,
],
exceptionHandlers: [
new transports.File({ filename: 'exceptions.log' })
]
});
module.exports = logger;
上面的配置文件在与基于Promise的量角器脚本一起使用时可以完美地工作,但是当异步等待出现时却会折腾。
任何建议或指示都会有很大帮助。