[英]Application starts using Logback after using Apache CXF
在我的应用程序中,一旦我添加了 SOAP 接口,它就会尝试使用Logback
。 由于我们没有Logback
,所以它抛出ClassNotFound
异常。
我添加了以下依赖项:
<dependency>
<groupId>org.apache.cxf</groupId>
<artifactId>cxf-spring-boot-starter-jaxws</artifactId>
<version>3.1.12</version>
</dependency>
而且我有以下日志记录的依赖性。
<dependencies>
<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.boot</groupId>
<artifactId>spring-boot-starter-log4j2</artifactId>
</dependency>
我添加了以下配置来配置端点。
@Configuration
public class WebServiceConfig {
@Autowired
private ReservationService reservationService;
@Bean
public Endpoint reservationEndpoint(){
Endpoint endpoint = new EndpointImpl(getBus(), reservationService);
endpoint.publish("/Reservation");
return endpoint;
}
@Bean
public Bus getBus() {
return new SpringBus();
}
}
在此之后,我收到以下错误:
Caused by: java.lang.ClassNotFoundException: ch.qos.logback.classic.joran.JoranConfigurator
at java.net.URLClassLoader.findClass(URLClassLoader.java:381)
at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:335)
at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
我无法找到使用Logback
的方式。 另外,我将META-INF/cxf/org.apache.cxf.Logger
配置为以下值: org.apache.cxf.common.logging.Slf4jLogger
。 尽管如此,它仍在使用Logback
。 早些时候,我的应用程序使用的是Log4j2
。 我想继续使用现有的日志系统。
在进一步调试中,我发现在运行时使用org.apache.cxf.common.logging.Slf4jLogger
属性,我们可以控制日志记录 class。 我尝试org.slf4j.core.Logger
和 log4j2 类。 他们面临没有此类方法异常的错误。
我想解决:
Logback
依赖,如何使用Log4j2
。为所有 spring-boot 启动器依赖项添加排除项,而不仅仅是 web
<exclusions>
<exclusion>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-logging</artifactId>
</exclusion>
</exclusions>
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.