【问题标题】:grails log4j is not working on custom appendersgrails log4j 不适用于自定义附加程序
【发布时间】:2014-07-22 00:38:44
【问题描述】:

我正在尝试将来自 grails.app.controllers 和 grails.app.services 的“信息及以上级别”日志记录到此附加程序“appLog”中。从文档和大量谷歌搜索和当然堆栈溢出。我知道我需要的只是我的附加程序,然后是记录器信息。 但这对我来说从来没有用过,所以我添加了如下的根块,并将每个日志路由到我的 appender,我还将我的可加性设置为 false,这样它就不会提取任何继承的日志。 我的要求很简单,但我无法让它工作。我正在使用 grails 2.4.1。

有人可以解释一下这里出了什么问题吗?

下面是我的配置:

Log4j:main{
    appender name: "appLog",
        new org.apache.log4j.DailyRollingFileAppender(
            threshold: org.apache.log4j.Level.INFO,
            datePattern: "'.'yyyy-MM-dd",
            file: log4jFileName,
            layout: pattern(conversionPattern: '[%d{yyyy-MM-dd hh:mm:ss.SSS}] %p %c{5} %m%n')
        )

    info additivity: false, appLog: "grails.app.services.xxxService"

    root {
        debug 'appLog'
        additivity = false 
    }

}

【问题讨论】:

  • 所有这些都在 Config.groovy 的 log4j 闭包中吗?意思是log4j = { ... }Log4J:main 你的配置部分让我失望。
  • 抱歉不清楚。是的,log4j 块在我的 config.groovy 类中。默认情况下,最后一个块被称为 log4j.main = {...} 这有一些注释掉的代码,我用我在问题中粘贴的代码替换了它..
  • 您的附加程序在appenders 块中吗?见the appenders section of the logging doc
  • 非常感谢。那是一个愚蠢的错误。我尝试了几乎所有的组合来让它工作,我删除了那个块。我的错。现在我可以在我的自定义附加程序中看到我在我的服务类中输入的日志。再次感谢:)
  • 没问题!很高兴能提供帮助。

标签: grails log4j


【解决方案1】:

我在这里看到了一些错误:

  1. 您的name: "appLog" 部分应位于DailyRollingFileAppender 构造函数内。
  2. 您缺少一个 appenders 块。

尝试将配置更改为:

log4j = {
    appenders {
        appender new org.apache.log4j.DailyRollingFileAppender(
            name: "appLog",
            threshold: org.apache.log4j.Level.INFO,
            datePattern: "'.'yyyy-MM-dd",
            file: log4jFileName,
            layout: pattern(conversionPattern: '[%d{yyyy-MM-dd hh:mm:ss.SSS}] %p %c{5} %m%n')
        )
    }

    info additivity: false,
         appLog: "grails.app.services.xxxService"

    root {
        debug 'appLog'
    }
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-01-24
    • 1970-01-01
    • 2017-08-22
    • 2014-12-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-05-29
    相关资源
    最近更新 更多