我确实遇到了类似的问题,并通过从以下代码中删除 winston.format.colorize() 语句来解决它,以消除日志文件中的奇数或转义码。
const logFormat = winston.format.combine (
winston.format.timestamp({ format: 'YYYY-MM-DD HH:mm:ss.SSS' }),
winston.format.colorize(),
winston.format.align(),
winston.format.printf(
info => `${info.timestamp} ${info.level.toUpperCase()}: ${info.message}`
));
虽然下面分享的是完整的工作代码,但没有任何与奇数或转义码相关的问题。
作为 /zipCode/config/default.json 文件的一部分捕获的默认配置
{
"port": 3000,
"logConfig": {
"logFolder": ".//logs//",
"logFile": "zip-code-%DATE%.log",
"logLevel": "info"
}
}
将创建记录器实现合并为 /zipCode/logger/log.js 文件的一部分
/**
* @author: dinesh.lomte
*/
const winston = require('winston');
const dailyRotateFile = require('winston-daily-rotate-file');
const config = require('config');
const logFormat = winston.format.combine (
winston.format.timestamp({ format: 'YYYY-MM-DD HH:mm:ss.SSS' }),
winston.format.align(),
winston.format.printf(
info => `${info.timestamp} ${info.level.toUpperCase()}: ${info.message}`
)
);
const transport = new dailyRotateFile({
filename: config.get('logConfig.logFolder') + config.get('logConfig.logFile'),
datePattern: 'YYYY-MM-DD',
zippedArchive: true,
maxSize: '20m',
maxFiles: '14d',
level: config.get('logConfig.logLevel')
});
transport.on('rotate', function(oldFile, newFile) {
// Call function like upload to s3 or on cloud
});
const logger = winston.createLogger({
format: logFormat,
transports: [
transport,
new winston.transports.Console({
level: config.get('logConfig.logLevel')
})
]
});
module.exports = logger;
在 /zipCode/api/controller.js 文件下方显示记录器的使用情况
/**
* @author: dinesh.lomte
*/
'use strict';
var distance = require('../service/distance');
var logger = require('../logger/log');
var controllers = {
get_distance: function(req, res) {
logger.info('Processing get_distance request...');
distance.find(req, res, function(err, dist) {
if (err) {
logger.error('Failed to process distance request, due to: ' + err);
res.send(err);
}
logger.debug('Processed get_distance request...');
res.json(dist);
});
}
};
module.exports = controllers;