我已经建立了一个示例Jhipster应用程序。我想要做的第一件事是将默认日志更改为使用log4j2。
我更新了我的应用程序的spring属性,指向1.2.0版本的M2。
环顾四周,我发现了一些排除logback和包含log4j2的方法,但是我并没有取得多大进展。我已经成功地包含了log4j2,但是它仍然在找到对logback的引用。我相信我可能需要改变一些为我生成的样板代码jhipster,但是在尝试同时学习许多东西时,我不确定最好的方法(Es)。
下面是我的gradle文件的一部分,我尝试排除日志记录(我做过的其他googling ),并插入了log4j2:
compile group: 'com.mattbertolini', name: 'liquibase-slf4j', version: liquibase_slf4j_version
compile group: 'org.springframework.boot', name: 'spring-boot-actuator', version: spring_boot_version
compile group: 'org.springframework.boot', name: 'spring-boot-starter-log4j2', version:spring_boot_version
compile group: 'org.springframework.boot', name: 'spring-boot-autoconfigure', version: spring_boot_version
compile group: 'org.springframework.boot', name: 'spring-boot-loader-tools', version: spring_boot_version
compile group: 'org.springframework.boot', name: 'spring-boot-starter-aop', version: spring_boot_version
compile group: 'org.springframework.boot', name: 'spring-boot-starter-data-jpa', version: spring_boot_version
compile group: 'org.springframework.boot', name: 'spring-boot-starter-security', version: spring_boot_version
compile group: 'org.springframework.boot', name: 'spring-boot-starter-tomcat', version: spring_boot_version
compile(group: 'org.springframework.boot', name: 'spring-boot-starter-web', version: spring_boot_version) {
exclude (module: 'spring-boot-starter-logging')
exclude (module: 'spring_boot-starter-tomcat')
}
compile group: 'org.springframework.boot', name: 'spring-boot-starter-tomcat', version: spring_boot_version
compile group: 'org.springframework.boot', name: 'spring-boot-starter-thymeleaf', version: spring_boot_version
compile group: 'org.springframework.cloud', name: 'spring-cloud-cloudfoundry-connector', version: spring_cloud_version
compile group: 'org.springframework.cloud', name: 'spring-cloud-spring-service-connector', version: spring_cloud_version
compile group: 'org.springframework.cloud', name: 'spring-cloud-localconfig-connector', version: spring_cloud_version
compile(group: 'org.springframework', name: 'spring-context-support') {
exclude(module: 'quartz')
}当我尝试启动我的应用程序时,我遇到了一些奇怪的错误:
SLF4J: Class path contains multiple SLF4J bindings.
SLF4J: Found binding in [jar:file:/C:/Users/sssn/.gradle/caches/modules-2/files2.1/org.apache.logging.log4j/log4j-slf4j-impl/2.0.2/f2cc4647e51810c3dd11df832229fac01d41aa51/log4j-slf4j-impl-2.0.2.jar!/org/slf4j/impl/StaticLoggerBinder.class]
SLF4J: Found binding in [jar:file:/C:/Users/sssn/.gradle/caches/modules-2/files-2.1/ch.qos.logback/logback-classic/1.1.2/b316e9737eea25e9ddd6d88eaeee76878045c6b2/logback-classic-1.1.2.jar!/org/slf4j/impl/StaticLoggerBinder.class]
SLF4J: See http://www.slf4j.org/codes.html#multiple_bindings for an explanation.
SLF4J: Actual binding is of type [org.apache.logging.slf4j.Log4jLoggerFactory]
Exception in thread "main" java.lang.IllegalArgumentException: LoggerFactory is not a Logback LoggerContext but Logback is on the classpath. Either remove Logback or the competing implementation (class org.apache.logging.slf4j.Log4jLoggerFactory loaded from file:/C:/Users/jmcgaffigan/.gradle/caches/modules-2/files-2.1/org.apache.logging.log4j/log4j-slf4j-impl/2.0.2/f2cc4647e51810c3dd11df832229fac01d41aa51/log4j-slf4j-impl-2.0.2.jar). Object of class [org.apache.logging.slf4j.Log4jLoggerFactory] must be an instance of class ch.qos.logback.classic.LoggerContext如果有人有任何建议或建议“试试这个”,我们会非常感激的。
UPDATE:运行gradle依赖项始终显示通过启动启动-aop包进入的日志记录:
+--- org.springframework.boot:spring-boot-starter-aop:1.2.0.M2
| +--- org.springframework.boot:spring-boot-starter:1.2.0.M2
| | +--- org.springframework.boot:spring-boot:1.2.0.M2 (*)
| | +--- org.springframework.boot:spring-boot-autoconfigure:1.2.0.M2 (*)
| | +--- org.springframework.boot:spring-boot-starter-logging:1.2.0.M2
| | | +--- org.slf4j:jcl-over-slf4j:1.7.7
| | | | \--- org.slf4j:slf4j-api:1.7.7
| | | +--- org.slf4j:jul-to-slf4j:1.7.7
| | | | \--- org.slf4j:slf4j-api:1.7.7
| | | +--- org.slf4j:log4j-over-slf4j:1.7.7
| | | | \--- org.slf4j:slf4j-api:1.7.7
| | | \--- ch.qos.logback:logback-classic:1.1.2
| | | +--- ch.qos.logback:logback-core:1.1.2
| | | \--- org.slf4j:slf4j-api:1.7.6 -> 1.7.7
| | +--- org.springframework:spring-core:4.1.1.RELEASE (*)
| | \--- org.yaml:snakeyaml:1.13
| +--- org.springframework:spring-aop:4.1.1.RELEASE (*)
| +--- org.springframework:spring-core:4.1.1.RELEASE (*)
| +--- org.aspectj:aspectjrt:1.8.2
| \--- org.aspectj:aspectjweaver:1.8.2
+--- org.springframework.boot:spring-boot-starter:1.2.0.M2 (*)我尝试过在teh初学者-aop和启动包上执行排除操作,但仍然没有成功。
发布于 2014-11-12 15:46:13
如果您想要使用相依性排除,那么,要成功地排除某项内容,就需要将该排除应用于每个临时依赖于您试图排除的模块的依赖项。这很快就会变得难以处理--您需要在几乎所有Spring依赖项上声明排除。
另一种更好的选择是将排除适用于整个配置:
configurations {
compile.exclude group: 'org.springframework.boot', module: 'spring-boot-starter-logging'
}甚至对每一种配置:
configurations {
all*.exclude group: 'org.springframework.boot', module: 'spring-boot-starter-logging'
}https://stackoverflow.com/questions/26872859
复制相似问题