2010-10-22 103 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

相关问题