Plain file logging in winston

2019-07-21 06:07发布

I want to log just the data and not log level, timestamp etc. to a file.

var logger = new (winston.Logger)({                                                                                     
  transports: [                                                                                                     
    new (winston.transports.File)({                                                                                 
        filename: '/tmp/data.log',                                                                                  
        json : false,                                                                                               
        timestamp : function() {                                                                                    
            return '';                                                                                              
        }                                                                                                           
    })                                                                                                              
  ]                                                                                                                 
}); 

logger.log('info', "a")

It removes the timestamp from the line but log level still appears. Currently, file contains "info: a". I want it to log just "a". Is it possible to specify output format in winston?

2条回答
我欲成王,谁敢阻挡
2楼-- · 2019-07-21 06:18

Unfortunately, that formatting is sort of hardcoded into winston; you can see the logic for it in the log function of common.js, which is used by most of the default transports.

The way around this would be to write your own custom transport which doesn't rely on common.log().

An aside: you can just provide a timestamp: false option to disable timestamp logging in the default transports.

查看更多
别忘想泡老子
3楼-- · 2019-07-21 06:36

You can define the custom log format like this

var logger = new (winston.Logger)({
transports: [
new (winston.transports.Console)({
timestamp: function() {
return Date.now();
},
formatter: function(options) {
// Return string will be passed to logger.
return options.timestamp() +' '+ options.level.toUpperCase() +' '+ (options.message ? options.message : '') + (options.meta && Object.keys(options.meta).length ? '\n\t'+ JSON.stringify(options.meta) : '' );
}
})
]
});
logger.info('Data to log.');
查看更多
登录 后发表回答