在项目中使用testng写单元测试,使用log4j输出日志,spring的日志也被打印出来,在调试的时候看到一片一片的spring日志很烦,总是要找自己的输出日志。
QQ截图20180320203129.jpg
这样式的~~~

找了一下log4j2的日志过滤,很简单,在logger定义名字的时候指定包名即可。

    <logger name="com.wangc" level="debug">
        <AppenderRef ref="Console" />
        <AppenderRef ref="test_log"/>
    </logger>
    <Root level="info">
        <AppenderRef ref="Console" />
    </Root>

com.wangc 包里的类使用debug级别,方便调试,并同时输出到文件和控制台。

使用Root 的info级别,控制其他第三方包的日志。

或者使用:

    <logger name="org.springframework" level="INFO"></logger>
    <Root level="debug">
        <AppenderRef ref="Console" />
    </Root>

ROOT使用debug级别,并指定org.springframework 使用info级别。

很简单,但是!!!在这个项目中并没有起作用,以为是log4j2的配置问题,反反复复的查找问题。

后来发现乌鸦在log4j2中定义的日志模板为

<PatternLayout pattern="[%-5p] %d %c - %m%n"/>

与上面spring输出的日志不一样,看来spring并没有使用乌鸦定义的log4j2配置。

仔细看了一下小伙伴创建的项目,使用的是spring-boot,默认使用了logback。在pom文件排除该包的依赖。

   <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-web</artifactId>
        <exclusions>
            <exclusion>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter-logging</artifactId>
            </exclusion>
        </exclusions>
    </dependency>

搞定!!!

PS:多此一举,spring-boot集成的logback是一个更优秀的日志框架!!!去TM的log4j吐~~~

参考:http://blog.didispace.com/springbootlog4j/