在 Grails 中使用外部 log4j.properties 文件的最佳方式是什么?我想使用传统的 log4j.properties 格式而不是 log4j.groovy 样式的配置。
我也很好奇外部配置是否可以很好地与由grails war
war 文件创建并放入的 log4j.properties 文件配合使用。如果我从 Config.groovy 中删除 log4j 配置,log4j.properties 是否仍会放入 war 文件中?
在 Grails 1 和 2 中,有一个在开箱即用的 webapp 中配置和使用的日志记录 DSL,因此您需要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"]
}
}
请注意,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
如果您使用的是 1.0.x 系列:
查看Log4J Plugin其中状态:
“一些老式的 Java 开发人员更喜欢 log4j.xml,即使配置文件要大得多。这个插件提供了一种方法来禁用默认的 Log4j DSL,并允许使用原始形式的 log4j.xml,或者Groovy MarkupBuilder 风格。”
我自己没有使用过它,所以无法说明它在 WAR 上下文中的可用性。只需 WAR 启动您的应用程序,然后尝试一下。它应该位于 WEB-INF 文件夹下的某个明显位置。如果这不起作用,grails 用户列表上的Mingfai可能会帮助您。
至少在 1.0.x 系列(未在 1.1 中检查)忘记 Grails 支持并直接依赖 Spring。只需使用 web.xml 中的 log4jConfigLocation 参数即可。更多信息在这里