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 hidden or 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