Grails2.1.1-回写集成
我正在使用Grails2.1.1进行开发,现在我想集成Logback(http://logback.qos.ch)作为默认的日志框架,它应该提供一些更好的日志功能,也可以通过Groovy进行配置 由于Logback 1.0.7(最新版本)仅适用于Grails2.1.1-回写集成,grails,logback,Grails,Logback,我正在使用Grails2.1.1进行开发,现在我想集成Logback(http://logback.qos.ch)作为默认的日志框架,它应该提供一些更好的日志功能,也可以通过Groovy进行配置 由于Logback 1.0.7(最新版本)仅适用于slf4j 1.6.6,因此我想升级Grails依赖项。Grails2.1.1正在使用slf4j 1.6.2。如何正确地做到这一点 我尝试了以下方法:在BuildConfig.groovyI排除grails-plugin-log4j和slf4j-api
slf4j 1.6.6
,因此我想升级Grails依赖项。Grails2.1.1正在使用slf4j 1.6.2
。如何正确地做到这一点
我尝试了以下方法:在BuildConfig.groovy
I排除grails-plugin-log4j
和slf4j-api
grails.project.dependency.resolution = {
// inherit Grails' default dependencies
inherits("global") {
excludes "grails-plugin-log4j", "slf4j-api"
}
...
}
我尝试将slf4japi 1.6.6
加载到compile
build
和runtime
以及其他必要的库中
grails.project.dependency.resolution = {
...
dependencies {
// specify dependencies here under either 'build', 'compile', 'runtime', 'test' or 'provided' scopes eg.
compile "org.slf4j:slf4j-api:1.6.6"
build "org.slf4j:slf4j-api:1.6.6",
"ch.qos.logback:logback-core:1.0.7",
"ch.qos.logback:logback-classic:1.0.7"
runtime "org.slf4j:slf4j-api:1.6.6",
"org.slf4j:log4j-over-slf4j:1.6.6", // logback dependency for classic module, as seen on http://logback.qos.ch/dependencies.html
"ch.qos.logback:logback-core:1.0.7",
"ch.qos.logback:logback-classic:1.0.7"
}
...
}
现在,如果我想从Grails命令行执行任何操作,无论是Grails compile
还是Grails clean
,它都会抱怨无法执行脚本,因为它找不到LoggerFactory类:
| Loading Grails 2.1.1
| Configuring classpath
| Error Error executing script Compile: org/slf4j/LoggerFactory (NOTE: Stack trace has been filtered. Use --verbose to see entire trace.)
java.lang.NoClassDefFoundError: org/slf4j/LoggerFactory
at org.apache.commons.logging.impl.SLF4JLogFactory.getInstance(SLF4JLogFactory.java:156)
at org.apache.commons.logging.impl.SLF4JLogFactory.getInstance(SLF4JLogFactory.java:132)
at org.apache.commons.logging.LogFactory.getLog(LogFactory.java:272)
at org.springframework.core.io.support.PathMatchingResourcePatternResolver.<clinit>(PathMatchingResourcePatternResolver.java:169)
| Error Error executing script Compile: org/slf4j/LoggerFactory
|加载Grails 2.1.1
|配置类路径
|执行脚本编译时出错:org/slf4j/LoggerFactory(注意:堆栈跟踪已被筛选。请使用--verbose查看整个跟踪。)
java.lang.NoClassDefFoundError:org/slf4j/LoggerFactory
位于org.apache.commons.logging.impl.SLF4JLogFactory.getInstance(SLF4JLogFactory.java:156)
位于org.apache.commons.logging.impl.SLF4JLogFactory.getInstance(SLF4JLogFactory.java:132)
位于org.apache.commons.logging.LogFactory.getLog(LogFactory.java:272)
位于org.springframework.core.io.support.PathMatchingResourcePatternResolver。(PathMatchingResourcePatternResolver.java:169)
|执行脚本编译时出错:org/slf4j/LoggerFactory
如何正确升级基础的slf4j api
如果我不首先排除slf4j api
,那么在调用grails依赖关系报告时,我会与标记为收回的“旧”1.6.2 api发生冲突
另外,我希望有一个用于Logback的外部配置文件。我将如何实施它?对于Log4j,我刚刚在conf/spring/resources.groovy
文件中声明了一个log4jConfigurer
bean——如何使用Logback
是否有人有使用Logback记录Grails 2.1.1的经验,并能就此问题给我一些建议?因为我认为这个问题对于其他愿意使用Grails实现Logback日志框架的开发人员来说也是事实,我将在这个答案中分享我在这个主题上的进展——尽量不要用进展信息来重载最初的问题
我仍然没有幸在Grails中更新slf4j,所以我坚持
通过简单重载slf4j api依赖项的解决方案。
Grails在Grails依赖项报告上不会显示错误,只是一个
旧slf4j依赖项上的“驱逐通知”(1.6.2)。这似乎
但我会继续寻找更好的解决方案
话题
现在,我可以通过加载一个外部配置文件来进行Logback
ServletContextListener
和ConfigLoader
类
在grails-app/src/java
中实现,带有
ServletContextListener
在web.xml
文件中注册。(至)
获取web.xml
只需在
命令行。你可以在下面找到它
grails-app/src/templates/war/web.xml
)确保它是第一个
在您的web.xml
中输入日志,以便
尽快配置并加载
我在上找到了这个解决方案以及完整的代码示例
哪一个是最好的和最短的
我在这个主题上找到的例子似乎很有效
此解决方案仅加载外部配置文件并使用
它位于ConfigLoader
类中,但没有为整个类设置它
Grails应用程序。所以我在谷歌上搜索了一下,找到了一个
来自Logback的解决方案,可从GitHub获得(https://github.com/qos-ch/logback-extensions)并与
Spring框架
,所以我从这个
来自的LogbackConfigurer
类,并调整它们以适合
我的需要
现在一切都像一个魔咒一样工作,我能够创建一个外部配置文件,而且——我最喜欢的是——它正在连接
使用注入到例如控制器
类的日志
对象
默认情况下
希望这对其他开发人员也有帮助;)
如果您有更好或更“优秀”的解决方案,请告诉我因为我认为这个问题对于其他愿意用Grails实现Logback日志框架的开发人员来说也是事实,所以我将在这个答案中分享我在这个主题上的进展——尽量不要让初始问题的进度信息过多
我仍然没有幸在Grails中更新slf4j,所以我坚持
通过简单重载slf4j api依赖项的解决方案。
Grails在Grails依赖项报告上不会显示错误,只是一个
旧slf4j依赖项上的“驱逐通知”(1.6.2)。这似乎
但我会继续寻找更好的解决方案
话题
现在,我可以通过加载一个外部配置文件来进行Logback
ServletContextListener
和ConfigLoader
类
在grails-app/src/java
中实现,带有
ServletContextListener
在web.xml
文件中注册。(至)
获取web.xml
只需在
命令行。你可以在下面找到它
grails-app/src/templates/war/web.xml
)确保它是第一个
在您的web.xml
中输入日志,以便
尽快配置并加载
我在上找到了这个解决方案以及完整的代码示例
哪一个是最好的和最好的