我在/ api / services
下定义了一个l.js.exports.i = sails.log.info;
exports.v = sails.log.verbose;
exports.err = sails.log.error;
exports.w = sails.log.warn;
exports.d = sails.log.debug;
它工作正常但我想在/config/log.js中定义自定义记录器
let customLogger = new (winston.Logger)({
transports: [
new (winston.transports.Console, winston.transports.File)({
name: 'file.info',
level: 'info',
filename: logPath + '/server-info.log',
json: true
}),
new (winston.transports.Console, winston.transports.File)({
name: 'file.warning',
level: 'warning',
filename: logPath + '/server-warning.log',
json: true
}),
new (winston.transports.File)({
name: 'file.error',
level: 'error',
filename: logPath + '/server-error.log',
json: true
})
]
});
module.exports.log = {
level: 'info',
custom: customLogger,
};
当我在控制器中使用sails.log.error("123"); l.err("456")
时,server-error.log文件中只显示“123”。 “456”仅打印到控制台。
当我检查sails doc有关生命周期时,似乎在/ api / services之前加载了/config/log.js。我应该如何修改我的代码?
由于
答案 0 :(得分:1)
尽管在config/log.js
之前加载了api/services/l.js
,(我的感觉是),在加载服务之后,将log.js中定义的自定义记录器分配给sails.log.<level>
。
因此行为。
重新分配lifted
事件修复此问题。在l.js
:
exports.err = sails.log.error;
sails.on('lifted', function() {
console.log('lifted event');
// Re-assign here
exports.err = sails.log.error;
});
对于其他服务方法也是如此。