【问题标题】:why i need to exclude "spring-boot-starter-logging" to be able to use spring-geode?为什么我需要排除“spring-boot-starter-logging”才能使用spring-geode?
【发布时间】:2019-03-29 07:48:10
【问题描述】:

为了能够使用spring-geode,我需要排除starter-logging,否则我会遇到:

Caused by: java.lang.ClassCastException: org.apache.logging.slf4j.SLF4JLogger cannot be cast to org.apache.logging.log4j.core.Logger
at org.apache.geode.internal.logging.LogService.init(LogService.java:81) ~[geode-core-1.2.1.jar:na]
at org.apache.geode.internal.logging.LogService.<clinit>(LogService.java:72) ~[geode-core-1.2.1.jar:na]
... 41 common frames omitted

我的 POM 现在看起来像这样:

 <dependency>
  <groupId>org.springframework.boot</groupId>
  <artifactId>spring-boot-starter-web</artifactId>
  <exclusions>
    <exclusion>
      <groupId>org.springframework.boot</groupId>
      <artifactId>spring-boot-starter-logging</artifactId>
    </exclusion>
  </exclusions>
</dependency>
<dependency>
  <groupId>org.springframework.geode</groupId>
  <artifactId>spring-geode-starter</artifactId>
</dependency>
<dependency>
  <groupId>org.springframework.data</groupId>
  <artifactId>spring-data-geode</artifactId>
  <version>2.0.10.RELEASE</version>
</dependency>

我该怎么办?

【问题讨论】:

  • 听起来像是日志依赖的冲突。最好将 log4j 依赖项排除在任何引入它的内容中(或者,如果您确实想使用 log4j,则排除 log4j-over-slf4j)。
  • 请在发帖前花时间正确格式化所有内容。

标签: java spring spring-boot geode


【解决方案1】:

Geode 引入了与 spring 日志记录冲突的日志记录依赖项 (log4j): https://mvnrepository.com/artifact/org.apache.geode/geode-core/1.7.0

请看https://lists.apache.org/thread.html/311d0e4bf742a2477f337f1028bdf991d16560c1bb0e7cd0f0ea9c1d@&lt;user.geode.apache.org&gt;

Spring 默认使用 Logback。您需要将日志框架更改为 log4j https://docs.spring.io/spring-boot/docs/current/reference/html/howto-logging.html#howto-configure-log4j-for-logging

【讨论】:

  • 它看起来不如 logback 好,但它确实有效。谢谢@ibexit
猜你喜欢
  • 2020-05-23
  • 1970-01-01
  • 1970-01-01
  • 2014-05-04
  • 2021-10-25
  • 2017-10-10
  • 2020-05-14
  • 2020-11-05
  • 2015-06-22
相关资源
最近更新 更多