我正试图让我的Grails应用程序使用logback插件登录。根据文档说明,以下是我迄今为止所做的工作:
BuildConfig
===========
grails.project.dependency.resolution = {
inherits("global") {
excludes 'grails-plugin-log4j', 'log4j', 'h2'
}
log "error"
checksums true
legacyResolve false
repositories {
inherits true
grailsPlugins()
grailsHome()
mavenLocal()
grailsCentral()
mavenCentral()
// For logback plugin.
mavenRepo "http://repo.grails.org/grails/libs-releases/"
}
dependencies {
// This plugin is a binary plugin, so it belongs here instead of under 'plugins'.
compile 'org.grails.plugins:logback:0.3.1'
test "org.grails:grails-datastore-test-support:1.0-grails-2.4"
}
}
Config
======
import ch.qos.logback.core.rolling.SizeBasedTriggeringPolicy
import ch.qos.logback.core.rolling.FixedWindowRollingPolicy
<lots of more configs here>
logback = {
appenders {
rollingFile name:
'rollingAppender',
file: '/tmp/rolling.log',
encoder: pattern(pattern: '%-4relative [%thread] %-5level %logger{35} - %msg%n'),
triggeringPolicy: new SizeBasedTriggeringPolicy(maxFileSize: 10*1024*1024),
rollingPolicy: new FixedWindowRollingPolicy(fileNamePattern: '/tmp/rolling.%i.log.gz')
}
root {
info rollingAppender
}
error rollingAppender: 'org.codehaus.groovy.grails.web.servlet',
'org.codehaus.groovy.grails.web.pages'
}
然后我运行了一个grails清洁
。当我运行一个grails运行应用程序
时,我得到一个绝对巨大的堆栈跟踪,如下所示:
|Compiling 161 source files
[groovyc] org.codehaus.groovy.control.MultipleCompilationErrorsException: startup failed:
[groovyc] General error during semantic analysis: Unable to load logging class
[groovyc]
[groovyc] groovy.lang.GroovyRuntimeException: Unable to load logging class
[groovyc] at org.codehaus.groovy.transform.LogASTTransformation$AbstractLoggingStrategy.classNode(LogASTTransformation.java:269)
[groovyc] at groovy.util.logging.Log4j$Log4jLoggingStrategy.addLoggerFieldToClass(Log4j.java:72)
[groovyc] at org.codehaus.groovy.transform.LogASTTransformation$1.visitClass(LogASTTransformation.java:112)
[groovyc] at org.codehaus.groovy.transform.LogASTTransformation.visit(LogASTTransformation.java:157)
<massive stack trace omitted for brevity>
General error during semantic analysis: Unable to load logging class
groovy.lang.GroovyRuntimeException: Unable to load logging class
at org.codehaus.groovy.transform.LogASTTransformation$AbstractLoggingStrategy.classNode(LogASTTransformation.java:269)
at groovy.util.logging.Log4j$Log4jLoggingStrategy.addLoggerFieldToClass(Log4j.java:72)
at org.codehaus.groovy.transform.LogASTTransformation$1.visitClass(LogASTTransformation.java:112)
<massive stack trace omitted for brevity>
at org.codehaus.groovy.grails.cli.support.GrailsStarter.rootLoader(GrailsStarter.java:236)
at org.codehaus.groovy.grails.cli.support.GrailsStarter.main(GrailsStarter.java:264)
Caused by: java.lang.ClassNotFoundException: org.apache.log4j.Logger
at java.net.URLClassLoader$1.run(URLClassLoader.java:366)
at java.net.URLClassLoader$1.run(URLClassLoader.java:355)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:354)
at java.lang.ClassLoader.loadClass(ClassLoader.java:425)
at groovy.lang.GroovyClassLoader.loadClass(GroovyClassLoader.java:655)
at groovy.lang.GroovyClassLoader.loadClass(GroovyClassLoader.java:765)
at groovy.lang.GroovyClassLoader.loadClass(GroovyClassLoader.java:753)
at java.lang.Class.forName0(Native Method)
at java.lang.Class.forName(Class.java:270)
at org.codehaus.groovy.transform.LogASTTransformation$AbstractLoggingStrategy.classNode(LogASTTransformation.java:267)
... 608 more
6 errors
此外,在我的GGTS IDE中,添加到Config.groovy
中的两个导入语句出现了编译器错误。听起来我的Grails应用程序中仍然有Log4j引用,并且运行grails清洁
将Log4j JAR从我的类路径中删除。这可能解释了堆栈跟踪。但这并不能解释为什么Grails(或至少我的GGTS IDE)找不到我正在导入的logback类。
我确实看到我的配置中仍然有这个:
grails.logging.jul.usebridge = true
所以我问:我如何修复这个堆栈跟踪和我的IDE错误?
做一个
grails依赖关系报告
会生成一个巨大的图表,它似乎显示了我在log4j上还有两个依赖关系:
+--- org.grails.plugins:tomcat:7.0.54
| \--- org.apache.tomcat:tomcat-catalina-ant:7.0.53
| \--- org.apache.tomcat.embed:tomcat-embed-jasper:7.0.53
| \--- org.apache.tomcat.embed:tomcat-embed-el:7.0.53
<HERE>
| \--- org.apache.tomcat.embed:tomcat-embed-logging-log4j:7.0.53
+--- org.grails:grails-plugin-rest:2.4.2
| \--- org.slf4j:jcl-over-slf4j:1.7.5
| \--- org.slf4j:slf4j-api:1.7.5
| \--- com.google.code.gson:gson:2.2.4
| \--- org.grails:grails-web:2.4.2
| \--- org.grails:grails-web-common:2.4.2
| \--- org.springframework:spring-webmvc:4.0.5.RELEASE
| \--- org.springframework:spring-context-support:4.0.5.RELEASE
| \--- org.grails:grails-databinding:2.4.2
| \--- org.grails:grails-web-url-mappings:2.4.2
| \--- org.grails:grails-web-fileupload:2.4.2
| \--- commons-fileupload:commons-fileupload:1.3.1
| \--- commons-io:commons-io:2.2
| \--- org.grails:grails-web-gsp:2.4.2
| \--- org.springframework:spring-aspects:4.0.5.RELEASE
| \--- org.grails:grails-web-mvc:2.4.2
| \--- org.grails:grails-web-sitemesh:2.4.2
| \--- opensymphony:sitemesh:2.4
| \--- org.grails:grails-web-databinding:2.4.2
| \--- org.grails:grails-web-jsp:2.4.2
| \--- org.aspectj:aspectjweaver:1.8.0
| \--- org.aspectj:aspectjrt:1.8.0
| \--- org.grails:grails-plugin-controllers:2.4.2
| \--- org.grails:grails-plugin-validation:2.4.2
| \--- org.grails:grails-plugin-datasource:2.4.2
| \--- org.springframework:spring-jdbc:4.0.5.RELEASE
<HERE>
| \--- org.apache.tomcat.embed:tomcat-embed-logging-log4j:7.0.50
所以:
org.grails.plugins:tomcat:7.0.54
取决于:
org.apache.tomcat.embed: tomcat-embed-loging-log4j: 7.0.53
;和
org.grails: grails-plugin-datassource: 2.4.2
这取决于:
org.apache.tomcat.embed: tomcat-embed-loging-log4j: 7.0.50
所以我的下一个问题是:这些是罪魁祸首吗?如果是,我如何安全地移除它们?
我有完全相同的堆栈跟踪,并通过添加一个slf4j log4j桥来解决它,以确保所有仍然依赖log4j的传递或插件现在将通过logback登录:
runtime "org.slf4j:jul-to-slf4j:1.7.7"
runtime "org.slf4j:log4j-over-slf4j:1.7.7"
希望有帮助。
我们使用ivy来管理一个多项目java应用程序,最近当我们进行构建时,这个错误开始出现。这是什么原因?
在我部署在WebSphere 8.5上的java应用程序中,我遇到了这个错误,尽管我的maven依赖项低于log4j。 我确实运行了一个,我可以看到它正以 的形式被拉进来,这是我期望在树结果中看到的,这样我就可以确认它在类路径中。有什么想法吗?
这是我们单个模块的pom.xml 我们有很多模块,当我们从intellji运行时,当我们尝试将单个模块转换为。jar并通过-mvn clean安装运行,我们得到了这个错误。 这是错误代码
我有一个Web应用程序Java类运行到一个名为Sincronizador的Wildfly中。我确实创建了一个特定的org.apache.log4j。记录器在Sincronizador.java但是也将信息放在Wildfly中。我想只在这个记录器中记录信息
Apache Kafka:分布式消息传递系统 Apache Storm:实时消息处理 我们如何在实时数据管道中使用这两种技术来处理事件数据? 在实时数据管道方面,我觉得两者做的工作是一样的。如何在数据管道上同时使用这两种技术?
我有一个简单的项目和一些EJB,我试图部署到一个服务器。这就是我如何尝试初始化我的: 没什么特别的。 这就是我的相关部分如下所示: 没有这一部分,我可以建立我的项目。但在这一部分,我得到了一个例外: 我该怎么办?非常感谢。