使用带有Grails的外部log4j.properties文件

Rob*_*ska 6 grails log4j

在Grails中使用外部log4j.properties文件的最佳方法是什么?我想使用传统的log4j.properties格式而不是log4j.groovy样式配置.

我也很好奇,如果外部配置可以很好地使用由grails warwar文件创建并放入war文件的log4j.properties 文件.如果我从Config.groovy中删除log4j配置,log4j.properties仍然会被放入war文件中吗?

Dre*_*rew 6

在Grails 1和2中,有一个日志DSL,它在一个开箱即用的webapp中配置和使用,因此你需要从中删除log4j = { ... }代码grails-app/conf/Config.groovy

如果要像在典型的Java Web应用程序中一样使用外部配置文件进行日志记录,请grails-app/conf/spring/resources.groovy使用以下内容更新文件.

beans = {
    log4jConfigurer(org.springframework.beans.factory.config.MethodInvokingFactoryBean) {
        targetClass = "org.springframework.util.Log4jConfigurer"
        targetMethod = "initLogging"
        arguments = ["classpath:log4j.properties"]
    }
}
Run Code Online (Sandbox Code Playgroud)

请注意,Log4j appender配置中使用的包名称可能不是您所期望的,因为它将添加一个Grails特定的前缀...

WARN grails.app.controllers.org.example.BookController - This is a warn log message from BookController
ERROR grails.app.controllers.org.example.BookController - This is an error log message from BookController
Run Code Online (Sandbox Code Playgroud)


j p*_*mel 3

查看Log4J 插件,其中指出:

“一些老派 Java 开发人员更喜欢 log4j.xml,尽管配置文件要大得多。这个插件提供了一种禁用默认 Log4j DSL 的方法,并允许以原始形式或以其他形式使用 log4j.xml。 Groovy MarkupBuilder 风格。”

我自己没有使用过它,所以无法谈论它在 WAR 上下文中的可用性。只需 WAR 出您的应用程序,然后尝试一下。它应该位于 WEB-INF 文件夹下明显的位置。如果这不起作用,grails 用户列表中的Mingfai可能可以帮助您。