2015-05-05 114 views
0

如何使用Grails外部屬性文件配置log4j?無法使用Grails外部屬性文件配置log4j

Config.groovy中:

grails.config.locations = [ 
    "classpath:${appName}-config.properties", 
    "classpath:${appName}-config.groovy", 
    "file:${userHome}/.grails/${appName}-config.properties", 
    "file:${userHome}/.grails/${appName}-config.groovy" 
] 

在$ {APPNAME} -config.properties:

log4j.rootLogger=ERROR, FA 
log4j.appender.FA=org.apache.log4j.FileAppender 
log4j.appender.FA.File=c:/logs/mylog.log 
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout 
log4j.appender.stdout.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss} %-5p %c{1}:%L - %m%n 

沒有輸出文件被創建和下面的是輸出到控制檯:

log4j:錯誤警告:發生異常配置log4j日誌記錄:沒有這樣的屬性:類的委託:java.lang.String

感謝

回答

0

我注意到你有:

「類路徑:$ {APPNAME} -config.properties」,
「類路徑:$ {APPNAME} -config.groovy」,
「文件:$ {} USERHOME/Grails的/ $ {APPNAME} -config.properties」,
「文件:$ {} USERHOME/Grails的/ $ {APPNAME} -config.groovy」

這可能會導致到可能導致問題的冗餘財產申報。 我會嘗試刪除頂部兩個類路徑聲明的文件,只是堅持一個屬性文件。 我通常通過環境(例如(DEV,TEST,PROD))將我的屬性文件分開,您可能只需要一個DEV,但您可能希望有一天有一個PROD環境。此外,您需要確保您的log4j配置設置正確,並且足夠簡單,只需使用小部分tweeking即可使用Grails爲create-app命令提供的內容。

Config.groovy中:

environments { 
     development { 
      appName = "application" 
      logDirectory = "/where/to/keep/local/logs/" 
      } 
    production { 
      appName = "application" 
      configDir ="/path/to/prod/app/cfg/" 
      //Make sure logDirectory is defined in your properties file 
      grails.config.locations = ["file:${configDir}${appName}-config.properties"] 
     } 
    } 

// log4j configuration 
log4j = { 
    println "Log Directory: ${logDirectory}" 
    def logPrefix = "applicationName" 

    appenders { 
     console name:'stdout', layout:pattern(conversionPattern: '%c{2} - %X{userName} - %m%n') 

     appender new DailyRollingFileAppender(
      name: 'stacktrace', 
      datePattern: "'.'yyyy-MM-dd", 
      fileName: "${logDirectory}/${logPrefix}Stacktrace.log", 
      layout: pattern(conversionPattern:'%d [%t] %-5p %c{2} %x - %X{userName} - %m%n') 
      ) 

     appender new DailyRollingFileAppender(
      name: 'logAppender', 
      datePattern: "'.'yyyy-MM-dd", 
      fileName: "${logDirectory}/${logPrefix}.log", 
      layout: pattern(conversionPattern:'%d [%t] %-5p %c{2} %x - %X{userName} - %m%n') 
     ) 

     appender new DailyRollingFileAppender(
      name: 'DebugLog', 
      datePattern: "'.'yyyy-MM-dd", 
      fileName: "${logDirectory}/${logPrefix}Debug.log", 
      layout: pattern(conversionPattern:'%d{dd MMM yyyy HH:mm:ss} [%X{userName}] %c{2} %m%n') 
     ) 
    } 
} 

而且在一個側面說明我看你保持下.grails目錄,我個人不會做你的屬性。如果你想:在保持它的應用程序,您可以創建應用/的grails-app/cfg /中目錄和訪問文件看起來是這樣的:

production { 
       appName = "application" 
       //Make sure logDirectory is defined in your properties file 
       grails.config.locations = ["file:../cfg/${appName}-config.properties"] 
      } 
+0

log4j的配置是否正常工作,如果我使用$ {APPNAME} -config.groovy。然而,我沒有設法使用$ {appName} -config.properties工作 - 同樣的錯誤。我也嘗試過使用grails.config.locations中列出的一個屬性文件。我將暫時使用groovy配置方法。 –

+0

只需將文件從.properties更改爲.groovy即可使用?我有我無法更改的第三方配置文件。我該怎麼辦? –