2010-10-22 122 views
5

我想在特定的appender中有我的包或類的日誌輸出。 但是一切都打印到根記錄器。將日誌輸出發送到grails中的不同文件1.3.2

這裏是我的配置:

log4j = { 
    appenders { 
     console name:'stdout', layout:pattern(conversionPattern: '%c{2} %m%n') 
     file name:'grailslog', file:'grails.log', threshold:org.apache.log4j.Level.DEBUG 
     file name:'mylog', file:'mylog.log', threshold:org.apache.log4j.Level.DEBUG 
    } 

    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 integration 
      'org.springframework', 
      'org.hibernate', 
      'net.sf.ehcache.hibernate' 

    warn 'org.mortbay.log' 

    debug 'grails.app' 

    debug mylog: 'my.package', additivity: true 

    root { 
     error 'grailslog' 
     additivity = true 
    } 
} 

我也試過這個語法:

log4j = { 
    appender.stdout = "org.apache.log4j.ConsoleAppender" 
    appender.'stdout.layout'="org.apache.log4j.PatternLayout" 
    appender.'stdout.layout.ConversionPattern'='[%r] %c{2} %m%n' 

    appender.mylog= "org.apache.log4j.DailyRollingFileAppender" 
    appender.'mylog.File' = "mylog.log" 
    appender.'mylog.layout' = "org.apache.log4j.PatternLayout" 
    appender.'mylog.layout.ConversionPattern' = '%d{[ dd.MM.yy HH:mm:ss.SSS]} [%t] %-5p %c %x - %m%n' 

    appender.grailslog = "org.apache.log4j.DailyRollingFileAppender" 
    appender.'grailslog.File' = "grails.log" 
    appender.'grailslog.layout' = "org.apache.log4j.PatternLayout" 
    appender.'grailslog.layout.ConversionPattern' = '%d{[ dd.MM.yy HH:mm:ss.SSS]} [%t] %-5p %c %x - %m%n' 

    rootLogger="error,stdout,grailslog" 

    logger { 
     grails="info,stdout,grailslog" 
     my.package="debug,mylog" 
    } 
} 

但是,這並不與當前的Grails版本工作了。


短的更新:

的Grails有日誌,DSL一個新的文檔(領域特定語言)。 因此上面的代碼有一個錯誤的語法。

他們寫道:

...記錄器的名字是......

回答

2

我設法使用我的其他日誌文件。

而不是使用包名稱的記錄器我使用了一個自定義的名稱並用此初始化我的記錄器。

debug mylog: 'myLog', additivity: true 

[...] 

def log = Logger.getLogger("myLog") 
0

我每環境增加了 'grails.app(類型)(類名)。'登錄所以我的生產日誌到一個文件/郵件&開發到標準輸出

environments { 
    development { 
    debug 'grails.app', 'stdout' 
    //trace 'org.hibernate.type' 

    } 
    production { 
    appenders { 
     file name: "file", file: "/var/log/myapp.log" 
     appender new SMTPAppender(name: 'smtp', to: mail.error.to, from: mail.error.from, 
      subject: mail.error.subject, threshold: Level.ERROR, 
      SMTPHost: mail.error.server, SMTPUsername: mail.error.username, 
      SMTPDebug: mail.error.debug.toString(), SMTPPassword: mail.error.password, 
      layout: pattern(conversionPattern: 
      '%d{[ dd.MM.yyyy HH:mm:ss.SSS]} [%t] %n%-5p %n%c %n%C %n %x %n %m%n')) 
    } 

    root { 
     error 'stdout', 'smtp','file' 
     additivity = true 
    } 
    } 
} 
+1

好的,看起來不錯。但我的意圖是將不同的包成員或日誌級別記錄到不同的日誌中。在我上面的例子中,我希望在一個單獨的日誌中記錄「my.package」的所有內容。 – steyze 2010-10-29 08:38:08

相關問題