Search code examples
grailslog4j

log4j config for grails 2+ for dailyRollOver not working


log4j = {
    def pattern = new PatternLayout('%d{dd-MM-yyyy HH:mm:ss,SSS} %5p %c{2} - %m%n')
    environments{
        development{
            appenders{
                appender new ConsoleAppender(
                        name: 'stdout',
                        layout: pattern
                )
                appender new DailyRollingFileAppender(
                        name:"file",
                        file:"/home/logs/app.log",
                        layout: pattern,
                        datePattern: "'.'yyyy-MM-dd")
            }
        }
        production{
            appenders {
                appender new DailyRollingFileAppender(
                        name:"file",
                        file:"/home/logs/app.log",
                        layout: pattern,
                        datePattern: "'.'yyyy-MM-dd")

                rollingFile name:"stacktrace",
                        file:"/home/logs/stacktrace.log"

                appender new ConsoleAppender(
                        name: 'stdout',
                        layout: pattern
                )
            }
        }
    }
    root {
        info("file")  
    }
}

DailyrollOver not working.According to the documentation ,I think there should be different files ( app.log.{today's_date}) .but only one file (app.log) exists.Am i missing something here?


Solution

  • Try this config in your any environment,

       import org.apache.log4j.DailyRollingFileAppender // import at the top of the file
       production {
    
        log4j = {
                appenders  {
                    file name : 'loggerFile', 
                    file :"/YOUR_PATH/loggerFile.log", 
                    append: false, 
                    layout: pattern(conversionPattern: '%d{dd-MM-yyyy HH:mm:ss} [%5p] - %m%n')
                    appender new DailyRollingFileAppender(
                            name: 'dailyAppender',
                            datePattern: "'.'yyyy-MM-dd",
                            fileName: "/YOUR_PATH/loggerFile.log",
                            layout: pattern(conversionPattern: '%d{dd-MM-yyyy HH:mm:ss} [%5p] - %m%n')
                )
    
              }
              root {
                debug 'dailyAppender'
                error 'stdout'
                info 'dailyAppender'
              } 
        }  
    }
    

    Note :

    1.you need to create the logger file at the given location like /YOUR_PATH/loggerFile.log otherwise app will throw the FileNotFound exception.

    1. Separate log for date wise file will take 1 or more hour to reflect after app start.