logback grails log in different files

To configure logback in Grails to log in different files, follow these steps:

  1. Create a new file called logback.groovy in the grails-app/conf directory if it doesn't exist already.

  2. Add the following configuration to logback.groovy to define separate appenders for different loggers:

import ch.qos.logback.classic.encoder.PatternLayoutEncoder
import ch.qos.logback.core.rolling.FixedWindowRollingPolicy
import ch.qos.logback.core.rolling.SizeBasedTriggeringPolicy
import ch.qos.logback.core.rolling.TimeBasedRollingPolicy
import ch.qos.logback.core.rolling.RollingFileAppender

appender("FILE1", RollingFileAppender) {
    file = "/path/to/your/log/file1.log"
    encoder(PatternLayoutEncoder) {
        pattern = "%d{yyyy-MM-dd HH:mm:ss} [%thread] %-5level %logger{36} - %msg%n"
    }
    rollingPolicy(FixedWindowRollingPolicy) {
        fileNamePattern = "/path/to/your/log/file1.%i.log.zip"
        minIndex = 1
        maxIndex = 3
    }
    triggeringPolicy(SizeBasedTriggeringPolicy) {
        maxFileSize = "10MB"
    }
}

appender("FILE2", RollingFileAppender) {
    file = "/path/to/your/log/file2.log"
    encoder(PatternLayoutEncoder) {
        pattern = "%d{yyyy-MM-dd HH:mm:ss} [%thread] %-5level %logger{36} - %msg%n"
    }
    rollingPolicy(TimeBasedRollingPolicy) {
        fileNamePattern = "/path/to/your/log/file2.%d{yyyy-MM-dd}.log"
    }
}

logger("com.example.package1", INFO, ["FILE1"], false)
logger("com.example.package2", INFO, ["FILE2"], false)

Replace /path/to/your/log/ with the actual path to your log directory.

  1. Save the logback.groovy configuration file.

  2. Ensure that the appropriate dependencies for logback are included in your build.gradle file:

dependencies {
    ...
    implementation 'ch.qos.logback:logback-classic:1.2.3'
    ...
}
  1. Restart your Grails application for the changes to take effect.