在Grails中使用外部log4j.properties文件的最佳方法是什么?我想使用传统的log4j.properties格式而不是log4j.groovy样式配置。
我也很好奇外部配置是否会与grails war
创建的log4j.properties文件很好地匹配并放入war文件中。如果从Config.groovy中删除log4j配置,log4j.properties是否仍会被放入war文件中?
答案 0 :(得分:6)
在Grails 1和2中,有一个logging DSL已经配置并在开箱即用的webapp中使用,因此您需要从{{1}中删除log4j = { ... }
代码}}
如果要像在典型的Java Web应用程序中那样使用外部配置文件进行日志记录,请使用以下内容更新文件grails-app/conf/Config.groovy
。
grails-app/conf/spring/resources.groovy
请注意,Log4j appender配置中使用的软件包名称可能不符合您的预期,因为它会在其上添加Grails特定的前缀...
beans = {
log4jConfigurer(org.springframework.beans.factory.config.MethodInvokingFactoryBean) {
targetClass = "org.springframework.util.Log4jConfigurer"
targetMethod = "initLogging"
arguments = ["classpath:log4j.properties"]
}
}
答案 1 :(得分:4)
如果您使用的是1.0.x系列:
答案 2 :(得分:3)
查看Log4J Plugin说明:
“即使配置文件要大得多,一些老式的Java开发人员对log4j.xml更为满意。这个插件提供了一种禁用默认Log4j DSL并允许以原始形式使用log4j.xml的方法,或者用Groovy MarkupBuilder风格。“
我自己没有使用它,所以不能说它在WAR上下文中的可用性。只需加强你的应用程序,然后试一试..它应该在WEB-INF文件夹下某处显而易见。如果这不起作用, grails user list 上的 Mingfai 可能会帮助你。
答案 3 :(得分:0)
至少在1.0.x系列中(未在1.1中检查过)忘记Grails支持并直接依赖Spring。只需使用web.xml中的log4jConfigLocation参数即可。更多信息here