logging - Spring Boot 日志记录与 logback 的问题

标签 logging logback spring-boot

当我将 Spring Boot Web 应用程序部署到传统的 weblogic 容器中时,我遇到了一些与日志记录相关的异常。同一应用程序可以与嵌入式 tomcat 一起正常工作,无需对其进行任何更改。

使用 weblogic 12 c,我看到了此异常:

在 org.springframework.util.Assert.isInstanceOf(Assert.java:339) 处 org.springframework.boot.logging.logback.LogbackLoggingSystem.initialize(LogbackLoggingSystem.java:92) 在 org.springframework.boot.logging.AbstractLoggingSystem.initializeWithSensibleDefaults(AbstractLoggingSystem.java:62) 在 org.springframework.boot.logging.AbstractLoggingSystem.beforeInitialize(AbstractLoggingSystem.java:45) 在 org.springframework.boot.logging.logback.LogbackLoggingSystem.beforeInitialize(LogbackLoggingSystem.java:68) 在 org.springframework.boot.logging.LoggingApplicationListener.onApplicationEvent(LoggingApplicationListener.java:131) 在 org.springframework.context.event.SimpleApplicationEventMulticaster.multicastEvent(SimpleApplicationEventMulticaster.java:98) 在 org.springframework.boot.context.event.EventPublishingRunListener.publishEvent(EventPublishingRunListener.java:92) 在 org.springframework.boot.context.event.EventPublishingRunListener.started(EventPublishingRunListener.java:53) 在 org.springframework.boot.SpringApplication.run(SpringApplication.java:269) 在 org.springframework.boot.builder.SpringApplicationBuilder.run(SpringApplicationBuilder.java:142) 在 org.springframework.boot.context.web.SpringBootServletInitializer.createRootApplicationContext(SpringBootServletInitializer.java:89) 在 org.springframework.boot.context.web.SpringBootServletInitializer.onStartup(SpringBootServletInitializer.java:51) 在 org.springframework.web.SpringServletContainerInitializer.onStartup(SpringServletContainerInitializer.java:175) 在 weblogic.servlet.internal.WebAppServletContext.initContainerInitializer(WebAppServletContext.java:1394) 在 weblogic.servlet.internal.WebAppServletContext.initContainerInitializers(WebAppServletContext.java:1331) 在 weblogic.servlet.internal.WebAppServletContext.initContainerInitializers(WebAppServletContext.java:1317) 在 weblogic.servlet.internal.WebAppServletContext.preloadResources(WebAppServletContext.java:1834) 在 weblogic.servlet.internal.WebAppServletContext.start(WebAppServletContext.java:2876) 在 weblogic.servlet.internal.WebAppModule.startContexts(WebAppModule.java:1661) 在 weblogic.servlet.internal.WebAppModule.start(WebAppModule.java:823) 在 weblogic.application.internal.ExtensibleModuleWrapper$StartStateChange.next(ExtensibleModuleWrapper.java:360) 在 weblogic.application.internal.ExtensibleModuleWrapper$StartStateChange.next(ExtensibleModuleWrapper.java:356) 在 weblogic.application.utils.StateMachineDriver.nextState(StateMachineDriver.java:42) 在 weblogic.application.internal.ExtensibleModuleWrapper.start(ExtensibleModuleWrapper.java:138)

我在父 pom 中使用 spring-platform 1.0.1。我的网络模块 pom 如下所示:

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-tomcat</artifactId>
    <scope>provided</scope>
</dependency>
<dependency>
    <groupId>people-mgmt</groupId>
    <artifactId>people-mgmt-data</artifactId>
    <version>0.0.1-SNAPSHOT</version>
</dependency>
<dependency>
    <groupId>org.apache.tomcat.embed</groupId>
    <artifactId>tomcat-embed-jasper</artifactId>
    <scope>provided</scope>
</dependency>
<dependency>
    <groupId>javax.servlet</groupId>
    <artifactId>jstl</artifactId>
</dependency>
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-test</artifactId>
    <scope>test</scope>
</dependency>

这是我的项目依赖树:

enter image description here enter image description here

任何解决该问题的帮助将不胜感激。

最佳答案

这是 weblogic 类加载器问题。请检查这些链接 - sl4j/logback under weblogichttp://blog.terrencemiao.com/archives/annoying-slf4j-problem-in-weblogic-server-12c

因此,通过在 WEB-INF 文件夹下的 weblogic.xml 中添加以下内容解决了此问题。

<weblogic-web-app xmlns="http://xmlns.oracle.com/weblogic/weblogic-web-app">
    <container-descriptor>
        <prefer-application-packages>
            <package-name>org.slf4j</package-name>
        </prefer-application-packages>
    </container-descriptor>
</weblogic-web-app>

关于logging - Spring Boot 日志记录与 logback 的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25344900/

相关文章:

spring-boot - 如何在 log-back.xml 中包含 xml

java - Logback - 每个方法使用 appender,而不是类

groovy - 使用 JMX 的 Logback Groovy 配置?

mysql - 在不重新启动的情况下禁用 MySQL 常规日志记录?

Spring Boot 配置不起作用

java - Junit Mockito NullPointerException for Mock 用于基于构造函数的 Autowiring

java - 在@Profile 中使用通配符

java - Junit 测试方法的日志输出是否正确?

logging - 为什么需要 Redis、AMQP 或 0MQ 以及 Elasticsearch 和 logstash?

java - 如何在 wildfly-8.2.0.Final 的自定义文件夹位置生成 server.log