Node.js - How to add timestamp to logs using Winston library?

logging, node.js, winston

Solution

I was dealing with the same issue myself. There are two ways I was able to do this.

When you include Winston, it usually defaults to adding a Console transport. In order to get timestamps to work in this default case, I needed to either:

- Remove the console transport and add again with the timestamp option.

- Create your own Logger object with the timestamp option set to true.

The first:

var winston = require('winston');
winston.remove(winston.transports.Console);
winston.add(winston.transports.Console, {'timestamp':true});

The second, and cleaner option:

var winston = require('winston');
var logger = new (winston.Logger)({
    transports: [
      new (winston.transports.Console)({'timestamp':true})
    ]
});

Some of the other options for Console transport can be found here:

- level: Level of messages that this transport should log (default 'debug').

- silent: Boolean flag indicating whether to suppress output (default false).

- colorize: Boolean flag indicating if we should colorize output (default false).

- timestamp: Boolean flag indicating if we should prepend output with timestamps (default false). If function is specified, its return value will be used instead of timestamps.

Problem

I want to add timestamp to logs. What is the best way to achieve this? Thanks.

Original source