Spring使用SLF4J代替Commons Logging写日志

项目的日志更换成slf4j和logback后,发现项目无法启动。错误提示java.lang.ClassNotFoundException: org.apache.commons.logging.Log,如图所示。原因是Spring默认使用commons logging写日志,需要桥接工具把日志输入重定向到slf4j。在项目中添加commons logging到slf4j的桥接器jcl-over-slf4j即可解决该问题。

<dependency>
    <groupId>org.slf4j</groupId>
    <artifactId>jcl-over-slf4j</artifactId>
    <version>1.7.12</version>
</dependency>

错误提示

Caused by: java.lang.NoClassDefFoundError: Lorg/apache/commons/logging/Log;
    at java.lang.Class.getDeclaredFields0(Native Method)
    at java.lang.Class.privateGetDeclaredFields(Class.java:2575)
    at java.lang.Class.getDeclaredFields(Class.java:1908)
    at org.apache.catalina.util.Introspection.getDeclaredFields(Introspection.java:106)
    at org.apache.catalina.startup.WebAnnotationSet.loadFieldsAnnotation(WebAnnotationSet.java:256)
    at org.apache.catalina.startup.WebAnnotationSet.loadApplicationServletAnnotations(WebAnnotationSet.java:132)
    at org.apache.catalina.startup.WebAnnotationSet.loadApplicationAnnotations(WebAnnotationSet.java:65)
    at org.apache.catalina.startup.ContextConfig.applicationAnnotationsConfig(ContextConfig.java:334)
    at org.apache.catalina.startup.ContextConfig.configureStart(ContextConfig.java:774)
    at org.apache.catalina.startup.ContextConfig.lifecycleEvent(ContextConfig.java:305)
    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:5095)
    at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150)
    ... 6 more
Caused by: java.lang.ClassNotFoundException: org.apache.commons.logging.Log
    at org.apache.catalina.loader.WebappClassLoaderBase.loadClass(WebappClassLoaderBase.java:1295)
    at org.apache.catalina.loader.WebappClassLoaderBase.loadClass(WebappClassLoaderBase.java:1147)
    ... 20 more

版权声明:本文为博主原创文章,未经博主允许不得转载。

时间: 2024-10-12 19:24:28

Spring使用SLF4J代替Commons Logging写日志的相关文章

日志组件系列:(2)commons logging和log4j实战

(1).下载组件,引入jar包 (2).配置 (3).使用API 1.下载组件,引入jar包 jar包 下载地址 log4j-1.2.17.jar http://logging.apache.org/log4j/1.2/ commons-logging-1.2.jar http://commons.apache.org/proper/commons-logging/download_logging.cgi 2.配置 在项目的src目录下添加log4j.properties文件,配置如下: log

(1)下载Spring framework和commons logging jar包

1.spring framework (1)访问https://repo.spring.io/release/ 并按照/org/springframework/spring目录找下去 (2)也可以直接访问https://repo.spring.io/release/org/springframework/spring/ 在这里,我选择下载了3.2.5.RELEASE版本 2.commons logging jar包 访问地址http://commons.apache.org/proper/com

ASP.NET Core 开发-Logging 使用NLog 写日志文件

ASP.NET Core 开发-Logging 使用NLog 写日志文件. NLog 可以适用于 .NET Core 和 ASP.NET Core . ASP.NET Core已经内置了日志支持,可以轻松输出到控制台. 学习Logging 组件的相关使用,使用NLog 将日志写入到文件记录. Logging 使用 新建一个 ASP.NET Core 项目,为了方便,我选择Web 应用程序,改身份验证 改为 不进行身份验证. 新建好以后,会自动引用好对应的 类库.这样我们就可以直接使用 Logge

在Spring中轻松写日志

最近觉得写的一点代码(JAVA),还觉得颇为自得,贡献出来供大家参考. 首先,先上代码: @Controller public class Controller1{ @WriteLog(value = "${p0.username}从${ctx.ip}登录, 登录${iif(ret.success,'成功','失败')}") public Object login(Login loginObj, HttpServletRequest req){ //blablabla... } } 在

程序员的修养 -- 如何写日志(logging)

  在程序中写日志是一件非常重要,但是很容易被开发人员忽视的地方.写好程序的日志可以帮助我们大大减轻后期维护压力. 在实际的工作中,开发人员往往迫于的巨大时间压力,而写日志又是一个非常繁琐的事情,往往没有引起足够的重视. 如果我们的开发人员在一开始就养成一个良好的习惯将非常有帮助.并且在实际的工作中也应当为写日志预留足够的时间.   我们为什要写日志呢? 一般来讲,我们在程序中记录日志出自下面几个方面的需求.   * 记录用户操作的审计日志,甚至有的时候就是监管部门的要求. * 快速定位问题的根

slf4j+logback搭建超实用的日志管理模块

文章转自http://www.2cto.com/kf/201702/536097.html slf4j+logback搭建超实用的日志管理模块(对日志有编号管理):日志功能在服务器端再常见不过了,我们非常有必要记录下发生在服务器上的活动,这些日志将用于debug.统计等各种用途. slf4j+logback这种实现方式是很常见的,好处自然是方便!.在这篇文章中,你将看到如何使用logback搭建你自己的日志组件并将日志输出到文件.如何查看这些文件.如何为每个线程上的访问分配独有的一个日志id.

Log4j写日志文件使用详解

Log4j输出到控制台成功,写入文件失败 - Log4j和commons log的整合 一.今天在使用commongs-logging.jar和log4j.properties来输出系统日志的时候,发现日志能够成功的输出到控制台,但是去不能写到目的文件中,具体的步骤和原因如下: 1. 只在项目中引入commons-logging.jar commons-logging.jar 使用 Log logger = LogFactory.getLogger(XXX.class), 如果有log4j.pr

springboot的日志框架slf4j (使用logback输出日志以及使用)

1.为什么使用logback? --在开发中不建议使用System.out因为大量的使用会增加资源的消耗.因为使用System.out是在当前线程执行的,写入文件也是写入完毕之后才继续执行下面的程序.而使用Log工具不但可以控制日志是否输出,怎么输出,它的处理机制也是通知写日志,继续执行后面的代码不必等日志写完. --个人推荐使用SLF4J(Simple Logging Fa?ade For Java)的logback来输出日志,其比log4j效率高.     --Spring Boot 提供了

spring boot slf4j日记记录配置详解

转 spring boot slf4j日记记录配置详解 2017年12月26日 12:03:34 阅读数:1219 Spring-Boot--日志操作[全局异常捕获消息处理?日志控制台输出+日志文件记录] 最好的演示说明,不是上来就贴配置文件和代码,而是,先来一波配置文件的注释,再来一波代码的测试过程,最后再出个技术在项目中的应用效果,这样的循序渐进的方式,才会让读者更加清楚的理解一项技术是如何运用在项目中的,虽然本篇很简单,几乎不用手写什么代码,但是,比起网上其他人写的同类型的文章来说,我只能