spring中配置logback+slf4j

以下配置基于spring整合logback、slf4j,每天生成两个日志文件(info级别和error及以上级别),控制台日志级别为info。

maven中的配置

 <!--jcl-over-slf4j是用来把Spring源代码中大量使用到的commons-logging替换成slf4j,
        只有在添加了这个依赖之后才能看到Spring框架本身打印的日志,否则只能看到开发者自己打印的日志-->
        <dependency>
            <groupId>org.slf4j</groupId>
            <artifactId>jcl-over-slf4j</artifactId>
            <version>1.7.25</version>
        </dependency>
        <!--@Slf4j等注解-->
        <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
            <version>1.18.8</version>
        </dependency>

        <!--logback-ext-spring是由官方提供的对Spring的支持,它的作用就相当于log4j中的Log4jConfigListener-->
        <dependency>
            <groupId>org.logback-extensions</groupId>
            <artifactId>logback-ext-spring</artifactId>
            <version>0.1.4</version>
        </dependency>

        <!--logback-classic包含了logback本身所需的slf4j-api.jar、logback-core.jar及logback-classsic.jar-->
        <dependency>
            <groupId>ch.qos.logback</groupId>
            <artifactId>logback-classic</artifactId>
            <version>1.2.3</version>
        </dependency>

 

logback.xml

<?xml version="1.0" encoding="UTF-8" ?>

<configuration>
    <!--配置项appernder(控制台输出)-->
    <appender name="console" class="ch.qos.logback.core.ConsoleAppender">
        <encoder>
            <!--日志打印格式:%d=时间;%t=线程名;%-5p=日志级别输出左对齐;%c=方法名;%m=消息;%n=换行-->
            <pattern>%d [%t] %highlight(%-5p) [%c] - %m%n</pattern>
        </encoder>
    </appender>

    <!--只输出info级别的可能-->
    <appender name="fileInfoLog" class="ch.qos.logback.core.rolling.RollingFileAppender">

        <filter class="ch.qos.logback.classic.filter.LevelFilter">
            <level>INFO</level>
            <onMatch>ACCEPT</onMatch><!--命中就应用-->
            <onMismatch>DENY</onMismatch><!--不中就忽略-->
        </filter>

        <encoder>
            <pattern>%d [%t] %-5p [%c] - %m%n</pattern>
        </encoder>
        <!--每天生成一个日志-->
        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
            <!--设置路径-->
            <fileNamePattern>journal/jquery_ajax/logs/info.%d.log</fileNamePattern>
        </rollingPolicy>

    </appender>


    <!--error级别的日志,只输出error及以上等级-->
    <appender name="fileErrorLog" class="ch.qos.logback.core.rolling.RollingFileAppender">

        <filter class="ch.qos.logback.classic.filter.ThresholdFilter">
            <level>error</level>
        </filter>

        <encoder>
            <pattern>%d [%t] %-5p [%c] - %m%n</pattern>
        </encoder>
        <!--每天生成一个日志-->
        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
            <!--设置日志的路径-->
            <fileNamePattern>journal/jquery_ajax/logs/error.%d.log</fileNamePattern>
        </rollingPolicy>

    </appender>

    <!-- 日志输出级别 -->
    <root level="info">
        <appender-ref ref="console"/>
        <appender-ref ref="fileInfoLog"/>
        <appender-ref ref="fileErrorLog"/>
    </root>

</configuration>

web.xml(在web.xml中配置一个listener.同时配置一个上下文参数,用于指定logback.xml配置文件的路径)

 <context-param>
        <param-name>logbackConfigLocation</param-name>
        <param-value>classpath:logback.xml</param-value>
    </context-param>
    <!--LogbackConfigListener由前述的logback-ext-spring依赖提供,若不依赖它则找不到这个listener类-->
    <listener>
        <listener-class>ch.qos.logback.ext.spring.web.LogbackConfigListener</listener-class>
    </listener>

以上配置之后,便整合完毕!

接着测试一下配置是否生效。

基于spring项目,在测试类中做以下日志级别输出。(一般我们自定义异常类,异常类中log.error("程序发生错误",e);)


@Slf4j
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(locations={"classpath:applicationContext.xml"})
@WebAppConfiguration
public class UserControllerTest {

    @Test
    public void sys(){
        log.trace("trace测试{}","嘻嘻");
        log.debug("debug测试{}","哈哈哈哈");
        log.info("info测试{}","hahaha");
        log.warn("warn测试{}","wowowo");
        log.error("error测试{}","xixixixi");
    }
}

得到结果如下: 

 

----------------------------------------------------------------------------------------------------------------

Spring Boot 的话,不用导包(spring-boot-starter默认导入了),也不用配置web.xml(因为没有这个文件)。

将logback.xml文件名改为logback-spring.xml就可以。

 

补充:

如果需要查看mybatis的SQL信息,需要把级别改为debug。

有两种方式:

1、把全局的日志级别设为info,然后把打印SQL相关的日志级别改为debug

    <logger name="druid.sql" level="debug"/>
    <logger name="com.xcj.batchdemo" level="debug"/>

    <!-- 日志输出级别 -->
    <root level="info">
        <appender-ref ref="console"/>
        <appender-ref ref="fileInfoLog"/>
        <appender-ref ref="fileErrorLog"/>
    </root>

2、将全局的日志级别设置为debug,然后将需要屏蔽的框架日志级别设置为info

    <logger name="org.springframework" level="INFO" />
    <logger name="org.hibernate" level="INFO" />
    <logger name="org.apache.ibatis" level="INFO" />
    <!-- 控制台日志输出级别 -->
    <root level="debug">
        <appender-ref ref="console"/>
        <appender-ref ref="fileInfoLog"/>
        <appender-ref ref="fileErrorLog"/>
    </root>

以上就是我对spring整合logback+slf4j的总结,谢谢。 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值