Explain use of levels in winston logger

Vikarn Singh Mankotia picture Vikarn Singh Mankotia · Jan 15, 2016 · Viewed 8.3k times · Source

Hey i am using this winston logger, kindly explain use of level inside the transports, what will happen if i use logger with info while logging, do i have to use debug while i log my data.

var logger = new (winston.Logger)({
transports: [
  new (winston.transports.Console)({
    level: 'debug',
    json: true
  }),
  new (winston.transports.File)({
    name: 'order_check',
    filename: './logs/order_check.log',
    level: 'debug'
  })
]
});
logger.log("info","request body");

Answer

Alex picture Alex · Jan 15, 2016

The level inside your transport indiciates the minimum logging level that transport will "listen out for"

From the documentation: https://github.com/winstonjs/winston#logging-levels

Each level is given a specific integer priority. The higher the priority the more important the message is considered to be

{ error: 0, warn: 1, info: 2, verbose: 3, debug: 4, silly: 5 }

So, in your example, you're transports are configured for debug: 4

This means, it will log levels

  • 4 (debug)
  • 3 (verbose)
  • 2 (info)
  • 1 (warn)
  • 0 (error)

A good use case for this would be to set one transport (Console for example) to debug, and your other to info.

This would output all debug information to the console, but only log info to file, preventing log file clutter.