Search code examples
javascriptnode.jslog4js-node

Is there any way in nodejs to print log4js output in JSON format?


I am trying to get output of log4js in JSON format so I can easily trace it. Is there any way that we have to set in configuration.json so output produced by log4js will be in JSON format?

Currently I am using following config.

{
 "appenders": [
{
  "category": "XXXXX",
  "type": "dateFile",
  "filename": "XXXXXXXX",
  "pattern": "-from-MM-dd",
  "layout": {
    "type": "messagePassThrough"
  }
},
{
  "category": "XXXXXXXXX",
  "type": "dateFile",
  "filename": "XXXXXXXX",
  "pattern": "-from-MM-dd",
  "layout": {
    "type": "messagePassThrough"
  }
}
 ],
"levels": {
"XXXXConfig":  "INFO",
"XXXXXjectConfig" : "INFO"
 }
}

and I got output is in following format :

DEBUG:  1458562784032 : 2016-03-21T12:19:44.4444+00:00 : Data in request: : {
"action": "XXXXXXX",
"user": {
    "username": "XXXX",
     "id" : XXXX,
    "pos" : XXXX
},
"version": 111
}

instead I want it in (Something like following structure) :

{"id" : "1458562784032", "time" : "2016-03-21T12:19:44.4444+00:00", "message" : "Data in request:", "data" : "{ "action": "XXXXXXX", "user": { "username": "XXXX", "id" : XXXX, "pos: : XXXX }, "version": 111 }" }

May be there is something I missing in config.

Thanks for helping.


Solution

  • We can use bunyan for same purpose which logs your console log in JSON format. Here is the npm link for node : https://www.npmjs.com/package/bunyan.

    Also even if you want to use log4js then create your own pattern and write log file into JSON format.

    Thanks.