Reputation: 4043
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
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
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