SpringMVC与LogBack集成

本文介绍如何在SpringMVC项目中集成LogBack日志框架,包括必要的Maven依赖配置及Web.xml、logback.xml文件的具体配置细节。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

   最近在做项目中需要用到日志,本来选取的是Log4j,最后经过对比之后还是发现LogBack在性能上比Log4j有优势。至于有什么好处,请参考下面这篇文章。

从Log4j迁移到LogBack的理由


    下面废话不多说了,就看一下,如何来把LogBack集成到我们的web项目中吧。本人前台用的是SpringMVC。

    jar包配置

   如果要使用LogBack做为日志的插件的话,需要的jar包有如下,直接看一下Maven依赖

<span style="font-family:Comic Sans MS;font-size:18px;"><dependency>  
            <groupId>org.slf4j</groupId>  
            <artifactId>slf4j-api</artifactId>  
            <version>1.7.12</version>  
        </dependency>  
        <dependency>  
            <groupId>ch.qos.logback</groupId>  
            <artifactId>logback-classic</artifactId>  
            <version>1.1.3</version>  
            <scope>compile</scope>  
            <exclusions>  
                <exclusion>  
                    <artifactId>slf4j-api</artifactId>  
                    <groupId>org.slf4j</groupId>  
                </exclusion>  
            </exclusions>  
        </dependency>  
  
        <dependency>  
            <groupId>ch.qos.logback</groupId>  
            <artifactId>logback-core</artifactId>  
            <version>1.1.3</version>  
            <exclusions>  
                <exclusion>  
                    <groupId>org.slf4j</groupId>  
                    <artifactId>slf4j-api</artifactId>  
                </exclusion>  
            </exclusions>  
            <scope>compile</scope>  
        </dependency>  
  
        <dependency>  
            <groupId>ch.qos.logback</groupId>  
            <artifactId>logback-access</artifactId>  
            <version>1.1.3</version>  
            <exclusions>  
                <exclusion>  
                    <groupId>org.slf4j</groupId>  
                    <artifactId>slf4j-api</artifactId>  
                </exclusion>  
            </exclusions>  
            <scope>compile</scope>  
        </dependency></span>  
 <dependency>
            <groupId>org.logback-extensions</groupId>
            <artifactId>logback-ext-spring</artifactId>
            <version>0.1.2</version>
            <exclusions>
                <exclusion>
                    <groupId>org.slf4j</groupId>
                    <artifactId>slf4j-api</artifactId>
                </exclusion>
            </exclusions>
        </dependency>

Web.xml
      在web项目中需要通过web.xml来加载我们所需要的LogBack.xml具体如下
<web-app version="2.5" xmlns="http://java.sun.com/xml/ns/javaee"  
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"  
    xsi:schemaLocation="http://java.sun.com/xml/ns/javaee  
    http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">  
  
  
  
  
    <!-- logback-begin -->  
    <context-param>  
        <param-name>logbackConfigLocation</param-name>  
        <param-value> classpath:logback.xml</param-value>  
    </context-param>  
 
    <!-- logback-end -->  
  
  
    <filter>  
        <filter-name>encodingFilter</filter-name>  
        <filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>  
        <init-param>  
            <param-name>encoding</param-name>  
            <param-value>UTF-8</param-value>  
        </init-param>  
        <init-param>  
            <param-name>forceEncoding</param-name>  
            <param-value>true</param-value>  
        </init-param>  
    </filter>  
    <filter-mapping>  
        <filter-name>encodingFilter</filter-name>  
        <url-pattern>/*</url-pattern>  
    </filter-mapping>  
  
    <servlet>  
        <servlet-name>springMVC</servlet-name>  
        <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>  
        <init-param>  
            <param-name>contextConfigLocation</param-name>  
            <param-value> classpath:springMVC-servlet.xml</param-value>  
        </init-param>  
        <load-on-startup>1</load-on-startup>  
    </servlet>  
    <!-- 这里一定要是/根据Servlet规范来的 -->  
    <servlet-mapping>  
        <servlet-name>springMVC</servlet-name>  
        <url-pattern>/</url-pattern>  
    </servlet-mapping>  
  
</web-app>
 logback.XML配置
下面来看一下这个xml是如何配置的
<!-- ROOT 节点 -->  
<!-- 属性描述 scan:性设置为true时,配置文件如果发生改变,将会被重新加载,默认值为true scanPeriod:设置监测配置文件是否有修改的时间间隔,如果没有给出时间单位,默认单位是毫秒。当scan为true时,此属性生效。默认的时间间隔为1分钟。   
    debug:当此属性设置为true时,将打印出logback内部日志信息,实时查看logback运行状态。默认值为false。 -->  
<configuration scan="true" scanPeriod="60 seconds" debug="false">  
    <!-- 定义日志文件 输入位置,注意此处的/ -->  
    <property name="log_dir" value="E:/logs" />  
    <!-- 日志最大的历史 60天 -->  
    <property name="maxHistory" value="60"></property>  
  
  
    <!-- 控制台输出日志 -->  
    <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">  
        <encoder>  
            <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger -  
                %msg%n</pattern>  
        </encoder>  
  
    </appender>  
  
  
    <!-- 出错日志 appender -->  
    <appender name="ERROR"  
        class="ch.qos.logback.core.rolling.RollingFileAppender">  
        <!-- 在多数的Log工具中,级别是可以传递,例如如果指定了日志输出级别为DEBUG, 那么INFO、ERROR级别的log也会出现在日志文件。这种默认给程序的调试带来了很多的麻烦   
            通过配置Filter 来严格控制日志输入级别 <filter class="ch.qos.logback.classic.filter.LevelFilter">   
            <level>ERROR/level> <onMatch>ACCEPT</onMatch> <onMismatch>DENY</onMismatch>   
            </filter> -->  
        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">  
            <!-- 按天回滚 daily -->  
            <fileNamePattern>${log_dir}/error-log-%d{yyyy-MM-dd}.log  
            </fileNamePattern>  
            <!-- 日志最大的历史 60天 -->  
            <maxHistory>${maxHistory}</maxHistory>  
        </rollingPolicy>  
        <encoder>  
            <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger -  
                %msg%n</pattern>  
        </encoder>  
    </appender>  
  
    <!-- INFO 日志 appender -->  
    <appender name="INFO"  
        class="ch.qos.logback.core.rolling.RollingFileAppender">  
        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">  
            <!-- 按天回滚 daily -->  
            <fileNamePattern>${log_dir}/info-log-%d{yyyy-MM-dd}.log  
            </fileNamePattern>  
            <!-- 日志最大的历史 60天 -->  
            <maxHistory>${maxHistory}</maxHistory>  
        </rollingPolicy>  
        <encoder>  
            <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger -  
                %msg%n</pattern>  
        </encoder>  
    </appender>  
  
  
    <!-- 访问日志 appender -->  
    <appender name="ACCESS"  
        class="ch.qos.logback.core.rolling.RollingFileAppender">  
        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">  
            <!-- 按天回滚 daily -->  
            <fileNamePattern>${log_dir}/access-log-%d{yyyy-MM-dd}.log  
            </fileNamePattern>  
            <!-- 日志最大的历史 60天 -->  
            <maxHistory>${maxHistory}</maxHistory>  
        </rollingPolicy>  
        <encoder>  
            <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger -  
                %msg%n</pattern>  
        </encoder>  
    </appender>  
  
    <!-- 系统用户操作日志 appender -->  
    <appender name="SYS-USER"  
        class="ch.qos.logback.core.rolling.RollingFileAppender">  
        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">  
            <!-- 按天回滚 daily -->  
            <fileNamePattern>${log_dir}/sys_user-log-%d{yyyy-MM-dd}.log  
            </fileNamePattern>  
            <!-- 日志最大的历史 60天 -->  
            <maxHistory>${maxHistory}</maxHistory>  
        </rollingPolicy>  
        <encoder>  
            <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger -  
                %msg%n</pattern>  
        </encoder>  
    </appender>  
  
  
    <!-- 打印SQL输出 -->  
    <logger name="java.sql.Connection" level="DEBUG" />  
    <logger name="java.sql.Statement" level="DEBUG" />  
    <logger name="java.sql.PreparedStatement" level="DEBUG" />  
  
  
  
    <!--error错误日志 additivity="false"表示不向上传递 -->  
    <!-- <logger name="com.test" level="error" > -->  
    <!-- <appender-ref ref="ERROR" /> -->  
    <!-- </logger> -->  
    <!--info日志 -->  
    <logger name="com.test" level="info" additivity="false">  
        <appender-ref ref="INFO" />  
    </logger>  
    <!--访问日志 -->  
    <!-- <logger name="com.test" level="info" additivity="false"> -->  
    <!-- <appender-ref ref="ACCESS" /> -->  
    <!-- </logger> -->  
    <!--系统用户操作日志 -->  
    <!-- <logger name="com.test" level="info" additivity="false"> -->  
    <!-- <appender-ref ref="SYS-USER" /> -->  
    <!-- </logger> -->  
  
    <root>  
        <level value="INFO" />  
        <appender-ref ref="stdout" />  
    </root>  
</configuration>





评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值