id0Sch / log4js-json-layout

provides a slim and easy to use json-layout for log4js-node
MIT License
17 stars 8 forks source link

How to use log4js-json-layout with confiuguration file #9

Closed jmcollin78 closed 3 years ago

jmcollin78 commented 3 years ago

Hello, To vet something more conformtable I use log4js with a configuration file like:


{
    "appenders": {
        "services" : {
            "type": "dateFile",
            "filename": "../logs/cld-apps-services.log",
            "pattern": "-yyyy-MM-dd",
            "maxLogSize": 20480,
            "backups": 3
        },
        "billing": {
            "type": "dateFile",
            "filename": "../logs/cld-apps-billing.log",
            "pattern": "-yyyy-MM-dd",
            "maxLogSize": 20480,
            "backups": 10
        },
        "accessLog": {
            "type": "dateFile",
            "filename": "../logs/cld-apps-access-log.log",
            "pattern": "-yyyy-MM-dd",
            "maxLogSize": 20480,
            "backups": 3
        },
        "errorFile": {
            "type": "file",
            "filename": "../logs/cld-apps-errors.log", 
            "layout": { 
                "type": "messagePassThrough" 
            }
        },
        "errors": { 
            "type": "logLevelFilter",
            "level": "ERROR",
            "appender": "errorFile"
        },
        "testu": {
            "type": "dateFile",
            "filename": "../logs/testu.log",
            "pattern": "-yyyy-MM-dd",
            "maxLogSize": 20480,
            "backups": 3
        },
        "console": {
            "type": "console"
        },
        "stdout": {
            type: "stdout"
        },
        "cloudstdout": {
            "type": "logLevelFilter",
            "level": "DEBUG",
            "appender": "stdout"
        },
        "stderr": {
            type: "stderr"
        },
        "cloudstdout": {
            "type": "logLevelFilter",
            "level": "ERROR",
            "appender": "stderr"
        }
    },
    "categories": {
        "default": { "appenders": ["console", "cloudstdout", "cloudstderr"], "level": "INFO" },
        "testu": { "appenders": ["testu", "services"], "level": "TRACE" },
        "testi": { "appenders": ["testu", "services"], "level": "TRACE" },
        "jmcnet": { "appenders": ["services", "errors", "cloudstdout", "cloudstderr" ], "level": "INFO" },
        "jmcnet.emailTemplate": { "appenders": ["services", "errors", "cloudstdout", "cloudstderr" ], "level": "DEBUG" },
        "ppnjs": { "appenders": ["services", "errors", "cloudstdout", "cloudstderr" ], "level": "INFO" },
        "access-log": { "appenders": ["services", "accessLog", "cloudstdout", "cloudstderr" ], "level": "INFO" },
        "cld-apps": { "appenders": ["services", "errors", "cloudstdout", "cloudstderr" ], "level": "INFO" },
        "cld-apps.billing": { "appenders": ["services", "errors", "billing", "cloudstdout", "cloudstderr" ], "level": "INFO" },
        "cld-apps.models": { "appenders": ["services", "errors", "cloudstdout", "cloudstderr" ], "level": "INFO" },
        "cld-apps.models.baseSchema": { "appenders": ["services", "errors", "cloudstdout", "cloudstderr" ], "level": "WARN" },
        "cld-apps.models.accounts": { "appenders": ["services", "errors", "cloudstdout", "cloudstderr" ], "level": "INFO" },
        "cld-apps.models.mailpoeteAccount": { "appenders": ["services", "errors", "cloudstdout", "cloudstderr" ], "level": "INFO" },
        "cld-apps.models.spaces": { "appenders": ["services", "errors", "cloudstdout", "cloudstderr" ], "level": "DEBUG" },
        "cld-apps.models.files": { "appenders": ["services", "errors", "cloudstdout", "cloudstderr" ], "level": "DEBUG" },
        "cld-apps.models.fileSpaces": { "appenders": ["services", "errors", "cloudstdout", "cloudstderr" ], "level": "DEBUG" },
        "cld-apps.utils": { "appenders": ["services", "errors" ], "level": "INFO", "cloudstdout", "cloudstderr" },
        "cld-apps.utils.helperAws": { "appenders": ["services", "errors", "cloudstdout", "cloudstderr" ], "level": "DEBUG" },
        "cld-apps.utils.helperZip": { "appenders": ["services", "errors", "cloudstdout", "cloudstderr" ], "level": "DEBUG" },
        "cld-apps.services": { "appenders": ["services", "errors" ], "level": "INFO", "cloudstdout", "cloudstderr" },
        "cld-apps.services.periodics": { "appenders": ["services", "errors", "cloudstdout", "cloudstderr" ], "level": "INFO" },
        "cld-apps.services.accounts": { "appenders": ["services", "errors", "cloudstdout", "cloudstderr" ], "level": "INFO" },
        "cld-apps.services.spaces": { "appenders": ["services", "errors", "cloudstdout", "cloudstderr" ], "level": "DEBUG" }
    }
}

My question is how to use a JSON layout with this kind of configuration file ? I cannot find any documentation on that

jmcollin78 commented 3 years ago

I figure out how to do. In source file (main.js):

/* must be done before other import which uses log4js */
const log4js = require('log4js'),
    jsonLayout = require('log4js-json-layout');
log4js.addLayout('json', jsonLayout);

And in the configuration file, just use json as layout like this:

"stdout": {
            "type": "stdout",
            "layout": {
              "type": "json"
            }
        },