【问题标题】:send log output to different files in grails 1.3.2将日志输出发送到 grails 1.3.2 中的不同文件
【发布时间】:2011-04-29 01:47:11
【问题描述】:

我想在特定的附加程序中输出我的包或类的日志。 但是所有内容都会打印到根记录器。

这是我的配置:

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 有一个新的 log-DSL(领域特定语言)文档。 因此上面的代码语法错误。

他们写道:

...记录器的名称是 'grails.app.(type).(className)' ...

【问题讨论】:

    标签: logging grails log4j appender


    【解决方案1】:

    我设法使用了我的其他日志文件。

    我没有使用带有包名的记录器,而是使用了自定义名称并用它初始化了我的记录器。

    debug  mylog: 'myLog', additivity: true
    
    [...]
    
    def log = Logger.getLogger("myLog")
    

    【讨论】:

      【解决方案2】:

      我添加了每个环境的日志记录,因此我的生产日志转到文件/电子邮件,而开发人员转到标准输出

      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
          }
        }
      }
      

      【讨论】:

      • 好的,看起来不错。但我的目的是将不同的包成员或日志级别记录到不同的日志中。在上面的示例中,我希望将“my.package”的所有内容放在一个单独的日志中。
      猜你喜欢
      • 2018-03-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-11-16
      • 2018-01-04
      • 2021-02-10
      相关资源
      最近更新 更多