Search code examples
node.jsexpressnpmlog4js-node

Log4js javascript create daily log file


I have a project nodejs and use log4js to write log. I want create new file log when start new date.
Example:
daily.2017_07_31.log
daily.2017_08_01.log
daily.2017_08_02.log
daily.2017_08_03.log

In java, I know config log4j but in nodejs with log4js I don't know. Thank every body for your help :)


Solution

  • winston is recommended for nodejs. Its pretty easy to use.

    Create a logger.js file and have this configuration '

    require('winston-daily-rotate-file');
    
    var winston = require('winston');
    
    winston.loggers.add('logger', {
        transports: [
    new (winston.transports.Console)(
                {
                    level: config.debugLogLevel,
                    colorize: true
                }),
    
            //new files will be generated each day, the date patter indicates the frequency of creating a file.
            new winston.transports.DailyRotateFile({
                    name: 'debug-log',
                    filename: '<log file name>',
                    level: '<level>',
                    prepend: true,
                    datePattern: '<pattern>',
                    maxFiles: <max file>
                }
            ),
            new (winston.transports.DailyRotateFile)({
                name: 'error-log',
                filename: '<log file name>',
                    level: '<level>',
                    prepend: true,
                    datePattern: '<pattern>',
                    maxFiles: <max file>
            })
        ]
    });
    
    var logger = winston.loggers.get('logger');
    Object.defineProperty(exports, "LOG", {value: logger});
    

    now you can use it anywhere like

    var log = require('./logger.js').LOG
    log.error('hello');