Grails:用logback替换log4j
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Grails:用logback替换log4j相关的知识,希望对你有一定的参考价值。
我试图用我的Grails应用程序替换log4j并使用logback,但我总是得到一个
Embedded error: java.lang.reflect.InvocationTargetException
org.apache.log4j.LogManager
在运行run-app或test-app时。
我在BuildConfig.groovy中包含以下内容,我认为这就足够了:
inherits("global") {
excludes "slf4j-log4j12"
}
[...]
dependencies {
build 'ch.qos.logback:logback-core:0.9.29', 'ch.qos.logback:logback-classic:0.9.29'
runtime 'ch.qos.logback:logback-core:0.9.29', 'ch.qos.logback:logback-classic:0.9.29'
}
我找不到更多对Log4J的引用,也不知道这个调用来自哪里?!
我也尝试用1.6.2替换Grails slf 1.5.8并在控制台中获得以下内容尽管已从所有Grails模块中排除了slf:
SLF4J: The requested version 1.6 by your slf4j binding is not compatible with [1.5.5, 1.5.6, 1.5.7, 1.5.8]
SLF4J: See http://www.slf4j.org/codes.html#version_mismatch for further details.
在此先感谢您的帮助
问候,
乔纳斯
Logback 0.9.21及更高版本取决于slf4j-api 1.6,这就是错误告诉你的。
为org.slf4j添加依赖项:slf4j-api:1.6
使用Grails 2.1.0时,这在BuildConfig.groovy中对我有用:
inherits("global") {
excludes 'grails-plugin-log4j'
}
[...]
dependencies {
compile 'ch.qos.logback:logback-classic:1.0.6'
runtime 'ch.qos.logback:logback-classic:1.0.6'
}
[...]
this.classLoader.rootLoader.addURL(new File("${basedir}/grails-app/conf/").toURI().toURL())
如果要在那里设置配置,最后一行使Grails正确读取grails-app / conf / logback.groovy。
我使用了logback 1.0.6。它没有用。但我用另一种方式。设置环境变量“logback.configurationFile = {groovy file address}”。例如:
grails run-app -Dlogback.configurationFile=c:loglogback.groovy
您可以在tomcat或将war文件放入其中的任何其他参数中使用此参数。
这个对我有用。
几天前我将Logback集成到Grails中 - 我的工作解决方案的步骤在这里:Grails 2.1.1 - Logback integration
此外,只有一个新的Plugin'围绕块:http://grails.org/plugin/logback看起来很有希望!
祝这个问题好运 - 值得付出努力!
它可能对其他人有帮助:
在Config.groovy中指定配置
logback = {
appenders {
console name: 'stdout', encoder: pattern(pattern: "%d{dd-MMM-yyyy HH:mm:ss} %-5p %c - %m%n")
rollingFile(
name: 'fileAppender',
file: logFileName,
encoder: pattern(pattern: "%d{dd-MMM-yyyy HH:mm:ss} %-5p %c - %m%n"),
triggeringPolicy: new SizeBasedTriggeringPolicy(maxFileSize: 10*1024*1024), // Max is 10 MB log files
rollingPolicy: new FixedWindowRollingPolicy(fileNamePattern: iLogFileName)
)
}
error fileAppender: 'org.codehaus.groovy.grails.web.servlet', // controllers
'org.codehaus.groovy.grails.web.pages', // GSP
'org.codehaus.groovy.grails.web.sitemesh', // layouts
'org.codehaus.groovy.grails.web.mapping.filter', // URL mapping
'org.codehaus.groovy.grails.web.mapping', // URL mapping
'org.codehaus.groovy.grails.commons', // core / classloading
'org.codehaus.groovy.grails.plugins', // plugins
'org.codehaus.groovy.grails.orm.hibernate', // hibernate integration
'org.springframework',
'org.hibernate',
'net.sf.ehcache.hibernate'
info fileAppender: 'org.springframework.web.client',
'com.yourpackage',
'com.linkedin.grails'
debug fileAppender: 'com.yourpackage', // Set debug level for non-grails artifacts, e.g. src/groovy, under the com.yourpackage.package
'grails.app' // Set debug level for all application artifacts
trace fileAppender: 'org.springframework.web.client',
'org.springframework.social',
'com.yourpackage'
root {
info 'stdout', 'fileAppender'
}
}
- 包括logback插件和Exclude require包:
在BuildConfig.groovy中
inherits("global") {
excludes 'grails-plugin-log4j', 'log4j' //using logback as grails-log4j have serialization issues with spark libraries
}
内部依赖项:include compile'org.grails.plugins:logback:0.3.1'
- 禁用Fork模式执行。它不适用于logback。
- 以上配置仅适用于WAR模式。
- 如果您甚至想在正常的本地开发模式下控制日志记录,请在conf目录中包含logback.xml文件。
logback.xml:
<?xml version="1.0" encoding="UTF-8" ?>
<configuration>
<appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
<encoder>
<pattern>%d{HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n</pattern>
</encoder>
</appender>
<root level="warn">
<appender-ref ref="STDOUT"/>
</root>
<shutdownHook/>
</configuration>
以上是关于Grails:用logback替换log4j的主要内容,如果未能解决你的问题,请参考以下文章