Skip to content

Instantly share code, notes, and snippets.

@ondrej-kvasnovsky
Last active December 21, 2015 02:59
Show Gist options
  • Save ondrej-kvasnovsky/6239237 to your computer and use it in GitHub Desktop.
Save ondrej-kvasnovsky/6239237 to your computer and use it in GitHub Desktop.
Grails and Logback: Provide default logback configuration for development environment
import ch.qos.logback.classic.Level
import ch.qos.logback.classic.Logger
import ch.qos.logback.classic.LoggerContext
import ch.qos.logback.classic.encoder.PatternLayoutEncoder
import ch.qos.logback.classic.joran.JoranConfigurator
import ch.qos.logback.core.ConsoleAppender
import grails.util.Environment
import org.apache.commons.logging.Log
import org.apache.commons.logging.LogFactory
import org.slf4j.LoggerFactory;
Log log = LogFactory.getLog("_Events")
def activateLogbackFromConfigFile = { LoggerContext loggerContext ->
JoranConfigurator configurator = new JoranConfigurator()
configurator.context = loggerContext
configurator.doConfigure('logback-config-dev.xml')
}
def activateLogbackProgrammatically = { LoggerContext loggerContext ->
PatternLayoutEncoder encoder = new PatternLayoutEncoder()
encoder.context = loggerContext
encoder.pattern = "%date{ISO8601} Thread=\"%thread\" %-5level logger=\"%logger{136}\" message=\"%msg\"%n"
encoder.start()
ConsoleAppender consoleAppender = new ConsoleAppender()
consoleAppender.name = 'console'
consoleAppender.context = loggerContext
consoleAppender.encoder = encoder
Logger rootLogger = LoggerFactory.getLogger(Logger.ROOT_LOGGER_NAME)
rootLogger.level = Level.WARN
rootLogger.addAppender(consoleAppender)
loggerContext.getLogger("com.example").level = Level.INFO
// loggerContext.getLogger("org.codehaus.groovy.grails").level = Level.INFO
// loggerContext.getLogger("org.springframework").level = Level.INFO
// loggerContext.getLogger("org.hibernate").level = Level.INFO
// loggerContext.getLogger("net.sf.ehcache.hibernate").level = Level.INFO
// loggerContext.getLogger("org.springframework.web.client").level = Level.INFO
consoleAppender.start()
}
eventCompileEnd = {
boolean isCurrentEnvDevelopment = Environment.DEVELOPMENT.equals(Environment.currentEnvironment)
if (isCurrentEnvDevelopment) {
String logbackConfig = System.properties["logback.configurationFile"]
if (!logbackConfig) {
logbackConfig = System.env["logback.configurationFile"]
}
boolean isLogbackConfigProvided = logbackConfig != null
if (isLogbackConfigProvided) {
LogFactory.getLog("_Events").info "Logback is using: $logbackConfig"
} else {
log.info 'Logback is set for development mode. Change logback-config-dev.xml in order to adjust logging levels or change logging programmatically in _Events.groovy script.'
// if we are in dev environment and logback is not provided, use this configuration
LoggerContext loggerContext = LoggerFactory.getILoggerFactory()
loggerContext.reset()
// activateLogbackFromConfigFile loggerContext
// or you can do this for dev needs (replace doConfigure method call)
activateLogbackProgrammatically loggerContext
}
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment