Dev1ce
Dev1ce

Reputation: 5944

How to use winston in NodeJs?

I am trying to create a sample nodeJs program to use and understand winston library for nodeJs,
I had a sample code from one of the existing projects and I am trying to create a sample code sample,
The code contains winston configuration and a simple test function to print logs using different log levels.
I'm using node version 4.6.2, I know it's pretty old but, the existing application is using the same, therefore I wanted to understand the implementation on the same version,
The example consists of the following code and a log folder, in which I wish to print the log.

Following is a sample code which I am trying to run -

var winston = require('winston');
var envData = require('dotenv').config({path: 'server.env'})
require('winston-daily-rotate-file');

var levelLog = 'debug';
var winstonTransports = [];

const logDTFormat = () => (new Date().toFormat('DD MMM YYYY HH24:MI:SS'));

// Winston Rotate File Logs
var transportDailyRotate = new (winston.transports.DailyRotateFile)({
    filename: './logs/hrfid_app_',
    datePattern: 'yyyy-MM-dd.log',
    prepend: false,
    level: levelLog,
    timestamp: function() {
    var dateTime = new Date(Date.now());
        return dateTime.toFormat('DD/MM/YYYY HH24:MI:SS');
    }
});

winstonTransports.push(transportDailyRotate);

// Winston Console Log 
var trasportConsole = new (winston.transports.Console)({
    timestamp: logDTFormat,
    colorize: true,
    level: levelLog
});

winstonTransports.push(trasportConsole);

// Winston Config
winston.configure({
    level: levelLog,
    transports: winstonTransports
});

const logger = winston.createLogger({
    level: 'info',
    format: winston.format.json(),
    transports: [
      //
      // - Write to all logs with level `info` and below to `combined.log` 
      // - Write all logs error (and below) to `error.log`.
      //
      new winston.transports.File({ filename: 'error.log', level: 'error' }),
      new winston.transports.File({ filename: 'combined.log' })
    ]
  });

  //
  // If we're not in production then log to the `console` with the format:
  // `${info.level}: ${info.message} JSON.stringify({ ...rest }) `
  // 
  if (process.env.NODE_ENV !== 'production') {
    logger.add(new winston.transports.Console({
      format: winston.format.simple()
    }));
  }

// Validate Server Configuration
if (envData.error) {
    winston.error('[APP-CONFIG]:', JSON.stringify(envData.error))
    winston.error('[APP-CONFIG]:', 'Error on Server Configuration')
    return
}

var test = function(){
  winston.error("ERROR log");
  winston.info("INFO log");
  winston.debug("DEBUG log");
}
test();

I am getting the following error,
Can someone please help fix my sample code?

enter image description here

Upvotes: 0

Views: 2646

Answers (1)

yeya
yeya

Reputation: 2204

Upgrade to node 6 or 8.

Latest winston require at least node 6.4

https://github.com/winstonjs/winston/blob/c42ab7fdc51b88db180a7dd90c52ce04ddd4e054/package.json#L69

Or use an older version of winston by deleting the existing one and execute npm install [email protected]

Upvotes: 1

Related Questions