美文网首页
6.1-springboot2.0的log4j2配置

6.1-springboot2.0的log4j2配置

作者: Guoyubo | 来源:发表于2018-09-05 14:51 被阅读0次

springboot2.0 如何配置log4j2?

吐槽:

查了2天的log4j2的知识,现在刚能配置出来,在此记录下,还有很多不明白的地方,感觉像是瞎配的。想去官网看的,看不出来啥东西,根本没找到配置文件内容怎么搞。。。。知道的告知下,也就在官网github看到下面这么写

image

之前配置过log4j,但是log4j2的效率不是更快嘛,就搞下了,说实话配置xml文件很恶心,难看死了,臃肿,看着就不舒服,我还是喜欢配置log4j.properties,干净明了,但偏偏log4j2的配置只支持.xml和.json
开始:

1 配置pom文件

从 Spring Boot 1.4开始的版本就要用log4j2了,支持的格式有json和xml两种格式,当然也不是说就不能用log4j,你直接引入log4j的jar包也一样可以用log4j。

我现在 springboot是2.0,在maven里我直接引入spring-boot-starter-log4j2就行了,版本号就不用写了,直接依赖parent就行了,这个简书的文本模式不能直接写代码,真是蛋疼啊,说明还是不够先进,截图吧,哎改成markdown了

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
            <exclusions>
                <!-- 想要配置log4j2,就要先去除logging包 -->
                <exclusion>
                    <groupId>org.springframework.boot</groupId>
                    <artifactId>spring-boot-starter-logging</artifactId>
                </exclusion>
            </exclusions>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-log4j2</artifactId>
        </dependency>
2 在application.properties同级目录下创建log4j2.xml文件

内容如下

<?xml version="1.0" encoding="UTF-8"?>
<configuration status="WARN">
    <appenders>
        <!--  输出控制台的配置 -->
        <Console name="console" target="SYSTEM_OUT">
            <!--  控制台只输出level及以上级别的信息(onMatch),其他的直接拒绝(onMismatch) -->
            <ThresholdFilter level="trace" onMatch="ACCEPT" onMismatch="DENY"/>
            <!--  这个都知道是输出日志的格式 -->
            <PatternLayout pattern="%d{HH:mm:ss.SSS} %-5level %class{36} %L %M - %msg%xEx%n"/>
        </Console>

        <!--配置自定义日志,按天输出-->
        <RollingFile name="weather" fileName="/log/weather.log" filePattern="/log/weather-%d{yyyy-MM-dd}.log" >
            <PatternLayout pattern="%d{yyyy.MM.dd HH:mm:ss.SSS} %-5level %class{36} %L %M - %msg%xEx%n"/>
            <Policies>
                <TimeBasedTriggeringPolicy />
            </Policies>
        </RollingFile>

        <!-- 把系统所有的error全部打到这个文件里  -->
        <File name="error" fileName="/log/error.log">
            <ThresholdFilter level="error" onMatch="ACCEPT" onMismatch="DENY"/>
            <PatternLayout pattern="%d{yyyy.MM.dd HH:mm:ss z} %-5level %class{36} %L %M - %msg%xEx%n"/>
        </File>

    </appenders>

    <!-- 然后定义logger,只有定义了logger并引入的appender,appender才会生效 -->
    <loggers>
        <!--过滤掉spring和mybatis的一些无用的DEBUG信息-->
        <logger name="org.springframework" level="ERROR"></logger>
        <logger name="org.mybatis" level="ERROR"></logger>
        <logger name="org.hibernate" level="ERROR"></logger>

        <root level="info">
            <appender-ref ref="console"/>
            <appender-ref ref="error" />
        </root>

        <!-- additivity="true" 的意思是会在控制台也输入一份-->
        <logger name="weather" level="info" additivity="true">
            <appender-ref ref="weather"/>
        </logger>

    </loggers>
</configuration>

结果就是会在电脑根目录下创建log文件夹,里面创建2个log文件,像这样


图片.png
其中

weather的log配置的是按天输出日志
error的log是所有的系统报错信息输出的log文件

3代码里如何使用
Logger logger =  LogManager.getLogger("weather");
logger.info("bala=balabalabalabala " );
图片.png

相关文章

网友评论

      本文标题:6.1-springboot2.0的log4j2配置

      本文链接:https://www.haomeiwen.com/subject/cbyawftx.html