aamir
aamir

Reputation: 4043

Plain file logging in winston

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?

Upvotes: 2

Views: 1855

Answers (2)

Syeda Sidrah
Syeda Sidrah

Reputation: 1

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.');

Upvotes: 0

LewisJEllis
LewisJEllis

Reputation: 31

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.

Upvotes: 2

Related Questions