Search code examples
node.jsdateconfigurationlog4js-node

How can convert log file time in this format "23-May-17 12:05:37" in log4js package using node js


I am trying to change log time this date time format [2017-05-23 12:05:37.327] into this 23-May-17 12:05:37. I am using this package: https://www.npmjs.com/package/log4js

Here is file configuration of node4js.

     {
       "appenders": [
      {

        "type": "file",
       "filename": "logs/v_1_0_9.log",
       "maxLogSize":1073741824,
       "backups": 10,
       "pattern": "%d{dd/MM hh:mm} %-5p %m"

        "category": "logger"
        }
      ],
            "replaceConsole": true
      }

Output of my code

[2017-05-24 15:57:00.924] [INFO] logger - tetsting

but above output is not my expected.

Expected output here:

[23-May-17 12:05:37] [INFO] logger - tetsting

Please help Thanks in Advance.


Solution

  • Here is a sloution:

    const date = new Date('2017-05-23 12:05:37.327').toString('dd-MMM-yy hh:mm:ss')
    

    EDIT: Sorry, here is a log4js solution:

    var log4js = require('log4js');
    var monthNames = [
      "January", "February", "March",
      "April", "May", "June", "July",
      "August", "September", "October",
      "November", "December"
    ];
    
    log4js.configure({
      appenders: [{
        type: "console",
        layout: {
          type: "pattern",
          pattern: "%x{ln} %-5p %m",
          tokens: {
            ln: function (data) {
              const date = new Date();
              var day = date.getDate();
              var monthIndex = date.getMonth();
              var year = date.getFullYear();
              var hours = date.getHours();
              var minutes = date.getMinutes();
              var seconds = date.getSeconds();
              return day + '-' + monthNames[monthIndex] + '-' + year + ' ' + hours + ':' + minutes + ':'
                + seconds;
            }
          }
        }
      }],
    });
    
    var logger = log4js.getLogger('cheese');
    logger.debug('test');
    

    Output: 29-May-2017 14:39:4 DEBUG test

    EDIT 2: conf.json:

    {
      "appenders": [
        {
          "type": "console",
          "layout": {
            "type": "pattern",
            "pattern": "%x{ln} %-5p %m",
            "tokens": {}
          }
        }
      ]
    }
    

    logger.js:

    var log4js = require('log4js');
    var config = require('./conf.json')
    var monthNames = [
      "January", "February", "March",
      "April", "May", "June", "July",
      "August", "September", "October",
      "November", "December"
    ];
    config.appenders[0].layout.tokens.ln = function () {
      const date = new Date();
      var day = date.getDate();
      var monthIndex = date.getMonth();
      var year = date.getFullYear();
      var hours = date.getHours();
      var minutes = date.getMinutes();
      var seconds = date.getSeconds();
      return day + '-' + monthNames[monthIndex] + '-' + year + ' ' + hours + ':' + minutes + ':'
        + seconds;
    };
    log4js.configure(config);
    
    var logger = log4js.getLogger('cheese');
    logger.debug('test');