winston 的字符串插值在 Nodejs 中不起作用
String interpolation with winston not working in Nodejs
当我尝试使用 winston logger 进行记录时,我无法在 nodejs 中正确看到 ID 和错误。
这是 logger.js 文件:
const path = require('path');
const winston = require('winston');
module.exports = function (app) {
global.logger = new Logger(app.config.get('app').logLevel);
};
function Logger(logLevel='info') {
return winston.createLogger({
levels: {alert: 0, error: 1, warn: 2, info: 3, verbose: 4, debug: 5, silly: 6},
level: logLevel,
transports: [
new (winston.transports.Console)({level: logLevel}),
new (require('winston-daily-rotate-file'))({filename: path.resolve(__dirname + '/../../logs/app.log')})
]
});
}
在Customer.js中,我试着这样记录:
logger.warn('Failed to update patient during user(%s) creation', userInstance.id, err);
这是我得到的输出:
{"_bsontype":"ObjectID","id":{"type":"Buffer","data":[93,0,225,203,227,175,68,1,61,50,162,194]},"level":"warn","message":"Failed to update patient during user(%s) creation"}
如有错误请指正
The log method provides the string interpolation using util.format. It must be enabled using format.splat().
看来您需要在记录器初始化时指定它。来自同一个 link:
const logger = createLogger({
format: format.combine(
format.splat(),
format.simple()
),
transports: [new transports.Console()]
});
当我尝试使用 winston logger 进行记录时,我无法在 nodejs 中正确看到 ID 和错误。
这是 logger.js 文件:
const path = require('path');
const winston = require('winston');
module.exports = function (app) {
global.logger = new Logger(app.config.get('app').logLevel);
};
function Logger(logLevel='info') {
return winston.createLogger({
levels: {alert: 0, error: 1, warn: 2, info: 3, verbose: 4, debug: 5, silly: 6},
level: logLevel,
transports: [
new (winston.transports.Console)({level: logLevel}),
new (require('winston-daily-rotate-file'))({filename: path.resolve(__dirname + '/../../logs/app.log')})
]
});
}
在Customer.js中,我试着这样记录:
logger.warn('Failed to update patient during user(%s) creation', userInstance.id, err);
这是我得到的输出:
{"_bsontype":"ObjectID","id":{"type":"Buffer","data":[93,0,225,203,227,175,68,1,61,50,162,194]},"level":"warn","message":"Failed to update patient during user(%s) creation"}
如有错误请指正
The log method provides the string interpolation using util.format. It must be enabled using format.splat().
看来您需要在记录器初始化时指定它。来自同一个 link:
const logger = createLogger({
format: format.combine(
format.splat(),
format.simple()
),
transports: [new transports.Console()]
});