我正在尝试将grails 2.5.4应用程序中的log4j版本从1.2.17升级到2.17.2。我能够构建和部署war,并使所有日志按预期工作,但在本地使用grails run应用程序运行时,该应用程序不会记录任何内容。
为了升级版本,我对BuildConfig.groovy:进行了以下更改
inherits("global") {
excludes "grails-plugin-log4j", "log4j"
}
dependencies {
runtime 'org.apache.logging.log4j:log4j-core:2.17.2'
runtime 'org.apache.logging.log4j:log4j-api:2.17.2'
runtime 'org.apache.logging.log4j:log4j-jcl:2.17.2'
runtime 'org.apache.logging.log4j:log4j-slf4j-impl:2.17.2'
runtime 'org.apache.logging.log4j:log4j-1.2-api:2.17.2'
log4j2.properties:
rootLogger.level = INFO
rootLogger.additivity = false
rootLogger.appenderRefs = stdout
rootLogger.appenderRef.stdout.ref = STDOUT
appender.console.type = Console
appender.console.name = STDOUT
appender.console.layout.type = PatternLayout
appender.console.layout.pattern = %d [%t] %-5p %c{2} %x %m %n
如果我删除log4j-1.2-api依赖项,则日志可以在本地运行应用程序,但在部署war时应用程序无法启动。主要错误日志为:
Caused by: java.lang.ClassNotFoundException: org.apache.log4j.Level
使用Log4j 2.17.1似乎已经解决了这个问题。