Last active
December 21, 2015 02:59
-
-
Save ondrej-kvasnovsky/6239237 to your computer and use it in GitHub Desktop.
Grails and Logback: Provide default logback configuration for development environment
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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