2

This is my winston config file :

import winston from "winston";

const alignColorsAndTime = winston.format.combine(
  winston.format.colorize({
    all: true,
  }),
  winston.format.label({
    label: "[LOGGER]",
  }),
  winston.format.timestamp({
    format: "YYYY-MM-DD HH:mm:ss",
  }),
  winston.format.printf(
    (info) => `${info.label} ${info.timestamp} ${info.level} : ${info.message}`
  )
);

export const logger = winston.createLogger({
  level: "debug",
  transports: [
    new winston.transports.Console({
      format: winston.format.combine(
        winston.format.colorize(),
        alignColorsAndTime
      ),
    }),
    new winston.transports.File({
      filename: "logs/example.log",
      format: winston.format.combine(
        winston.format.timestamp({
          format: "YYYY-MM-DD HH:mm:ss",
        })
      ),
    }),
  ],
});

It logs like this : enter image description here

The problem is the saved log file doesn't have timestamp :

{"level":"info","message":"asd"}

How can I add timestamp to the saved log file by winston ?

Mehdi Faraji
  • 2,574
  • 8
  • 28
  • 76

2 Answers2

0
winston.format.printf(
  (info) => `${info.label} [${new Date(info.timestamp).toISOString()}] 
    ${info.level} : ${info.message}`
)

Here you go, it will produce output like this.enter image description here

0

I solved the problem with formats.json() like this :

export const logger = winston.createLogger({
  level: "debug",
  transports: [
    new winston.transports.Console({
      format: winston.format.combine(
        winston.format.colorize(),
        alignColorsAndTime
      ),
    }),
    new winston.transports.File({
      filename: "logs/example.log",
      format: winston.format.combine(
        winston.format.timestamp({
          format: "YYYY-MM-DD HH:mm:ss",
        }),
        winston.format.json()
      ),
    }),
  ],
});
Mehdi Faraji
  • 2,574
  • 8
  • 28
  • 76