sails生命周期 - 自定义服务和config.log

时间:2017-03-31 08:10:57

标签: sails.js

我在/ 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。我应该如何修改我的代码?

由于

1 个答案:

答案 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;
});

对于其他服务方法也是如此。