0

I am trying to create the log file based on the dates so that each datewise can store the logs

I tried following configs but when I add the date pattern yyyy-MM-dd it is only creating the app.log file not the date file.

Note: but when I use yyyy-MM-dd-hh-mm it is creating app.log and yyyy-mm-dd-hh-mm.log file.

How I can have only one log file based on date and each day it will create a new log file?

import {
    configure,
    getLogger
} from 'log4js'
import config from '../config'
const fs = require('fs');
const path = require('path');
export function getDefaultLogger() {
    const myLogger = getLogger()
    const logDirectory = path.join(__dirname, 'logs');
    if (!fs.existsSync(logDirectory)) {
        fs.mkdirSync(logDirectory)
    }
    const appenderData = [{
        name: 'out',
        type: 'stdout'
    }, {
        name: 'app',
        type: 'dateFile'
    }]
    const appendersVal = appenderData.reduce((acc, appender) => {
        acc[appender.name] = {
            type: appender.type,
            filename: path.join(logDirectory, `${appender.name}.log`),
            pattern: 'yyyy-MM-dd',
            keepFileExt: true
        };
        return acc;
    }, {});
    if (appendersVal) {
        console.log("inside appendersVal", appendersVal)
        // Allow for single or multiple appenders
        configure({
            appenders: appendersVal,
            categories: {
                default: {
                    appenders: appenderData.map(a => a.name),
                    level: 'info'
                }
            }
        })
    }
    myLogger.level = config.logger.level
    return myLogger
}

For usage of the logger in my app files I am using

let logger = getDefaultLogger()
logger.info("test")

log4js version: 6.9.1

Bravo
  • 61
  • 2
  • 7
  • 26

0 Answers0