2017-04-26 8 views
0

저는 grails에서 새로 왔고, 어플리케이션을위한 loggind를 설정해야합니다. 내 Grails 애플리케이션에서의 log4j를 구성하기 시작하고이 오류는 아래에 설명 된 있고 난이 만드는 모르는 :log4j grails 설정하기

log4j:ERROR Property missing when configuring log4j: Environment 

사람이 어떤 원인을 알고 있습니까? 아래 내 코드입니다!

def myappLogLevel = "DEBUG" 
def myappLogPattern = "%d{yyyy-MM-dd/HH:mm:ss.SSS} [%t] %x %-5p %c{2} - 
%m%n" 
def log4jFileName = System.properties.getProperty('catalina.base', '.') + 
"/logs/myapp.log" 

environments { 
    development { 
     log4jFileName = "logs/myapp.log" 
    } 
test { 
    log4jFileName = "logs/myapp.log" 
} 


log4j = { 

def logLayoutPattern = new PatternLayout(myappLogPattern) 

appenders { 
    appender new DailyRollingFileAppender(name: "myappLog", 
      threshold: Level.toLevel(myappLogLevel), 
      file: log4jFileName, 
      datePattern: "'.'yyyy-MM-dd", //Rollover at midnight each day. 
      layout: logLayoutPattern 
    ) 
    if (Environment.current == Environment.DEVELOPMENT || 
      Environment.current == Environment.TEST) { 
     appender new ConsoleAppender(name: "console", 
       threshold: Level.toLevel(myappLogLevel), 
       layout: logLayoutPattern 
     ) 
    } 
} 
error 'org.codehaus.groovy.grails.web.servlet', // controllers 
     'org.codehaus.groovy.grails.web.pages', // GSP 
     'org.codehaus.groovy.grails.web.sitemesh', // layouts 
     'org.codehaus.groovy.grails.web.mapping.filter', // URL mapping 
     'org.codehaus.groovy.grails.web.mapping', // URL mapping 
     'org.codehaus.groovy.grails.commons', // core/classloading 
     'org.codehaus.groovy.grails.plugins', // plugins 
     'org.codehaus.groovy.grails.orm.hibernate', // hibernate 
     'org.springframework', 
     'org.hibernate.cache', 
     'org.hibernate', 
     'net.sf.ehcache.hibernate' 
'grails' 
'groovyx.net.http' 

warn 'org.springframework', 
     'org.hibernate', 
     'grails.plugins.springsecurity', 
     'groovyx.net.http' 

debug 'grails.plugins.springsecurity', 
     'grails.plugin.springcache', 
     'com.myapp', 
     'org.codehaus.groovy.grails.plugins.springsecurity', 
     'org.apache.http.headers', 
     'grails.app.services', 
     'grails.app.domain', 
     'grails.app.controllers', 
     'grails.plugin.databasemigration', 
     'liquibase' 

    List<String> loggers = [] 
    loggers.add('myappLog') 
    if (Environment.current.name == "development" || 
     Environment.current.name == "test") { 
      loggers.add('console') 
    } 
    root { 
     error loggers as String[] 
     additivity = true 
    } 

} 
+0

환경을 사용하려면 grails.util.Environment를 가져와야합니다. – railsdog

답변

0

명시 적으로 환경에 액세스하지 않고도 로그 구성 DSL 구성을 사용하여 환경으로 분기 할 수 있습니다.

environments { 
    development { loggers.add('console') } 
    test { loggers.add('console') } 
} 

난 당신이 구성의 나머지 부분과 달성 하려는지 모르겠습니다 말했다, 그래서 일을 처리하는 더 우아한 방법이 될 수있다.