zoukankan      html  css  js  c++  java
  • Spring 使用 SLF4J代替 Commons Logging 写日志 异常

    项目的日志更换成slf4j和logback后,发现项目无法启动。错误提示 Caused by: java.lang.NoClassDefFoundError: Lorg/apache/commons/logging/Log;,如图所示。

    Jun 24, 2016 10:18:08 AM org.apache.catalina.core.ContainerBase addChildInternal
    SEVERE: ContainerBase.addChild: start:
    org.apache.catalina.LifecycleException: Failed to start component [StandardEngine[Catalina].StandardHost[localhost].StandardContext[]]
            at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:153)
            at org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:899)
            at org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:875)
            at org.apache.catalina.core.StandardHost.addChild(StandardHost.java:652)
            at org.apache.catalina.startup.HostConfig.deployWAR(HostConfig.java:1091)
            at org.apache.catalina.startup.HostConfig$DeployWar.run(HostConfig.java:1980)
            at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:471)
            at java.util.concurrent.FutureTask.run(FutureTask.java:262)
            at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
            at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
            at java.lang.Thread.run(Thread.java:745)
    Caused by: java.lang.NoClassDefFoundError: Lorg/apache/commons/logging/Log;
            at java.lang.Class.getDeclaredFields0(Native Method)
            at java.lang.Class.privateGetDeclaredFields(Class.java:2499)
            at java.lang.Class.getDeclaredFields(Class.java:1811)
            at org.apache.catalina.util.Introspection.getDeclaredFields(Introspection.java:106)
            at org.apache.catalina.startup.WebAnnotationSet.loadFieldsAnnotation(WebAnnotationSet.java:270)
            at org.apache.catalina.startup.WebAnnotationSet.loadApplicationServletAnnotations(WebAnnotationSet.java:139)
            at org.apache.catalina.startup.WebAnnotationSet.loadApplicationAnnotations(WebAnnotationSet.java:65)
            at org.apache.catalina.startup.ContextConfig.applicationAnnotationsConfig(ContextConfig.java:415)
            at org.apache.catalina.startup.ContextConfig.configureStart(ContextConfig.java:892)
            at org.apache.catalina.startup.ContextConfig.lifecycleEvent(ContextConfig.java:386)
            at org.apache.catalina.util.LifecycleSupport.fireLifecycleEvent(LifecycleSupport.java:117)
            at org.apache.catalina.util.LifecycleBase.fireLifecycleEvent(LifecycleBase.java:90)
            at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5472)
            at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:147)
            ... 10 more
    Caused by: java.lang.ClassNotFoundException: org.apache.commons.logging.Log
            at org.apache.catalina.loader.WebappClassLoaderBase.loadClass(WebappClassLoaderBase.java:1858)
            at org.apache.catalina.loader.WebappClassLoaderBase.loadClass(WebappClassLoaderBase.java:1701)
            ... 24 more

    原因是 spring 默认使用 commons logging 写日志,需要桥接工具把日志输入重定向到 slf4j。在项目中添加 commons logging 到 slf4j 的桥接器 jcl-over-slf4j 即可解决该问题。

    <dependency>
        <groupId>org.slf4j</groupId>
        <artifactId>jcl-over-slf4j</artifactId>
    </dependency>
  • 相关阅读:
    IntelliJ IDEA2020.1版本更新pom文件自动导包的方法
    Spring Boot打包瘦身 Docker 使用全过程 动态配置、日志记录配置
    从零开始学习html(二)认识标签(第一部分)——上
    从零开始学习html(一) Html介绍
    使用JavaScript获取CSS伪元素属性
    Promise实现简易AMD加载器
    Jquery 欲绑定事件
    ArcGIS API for Javascript 图层切换渐变效果实现
    Grunt 与WebStrom 集成
    Javascript 控制 让输入框不能输入 数字
  • 原文地址:https://www.cnblogs.com/tannerBG/p/5626062.html
Copyright © 2011-2022 走看看