Spring Boot的log4j2的使用(自定义级别与发送自定义好的级别日志)

去除spring boot 的logging

首先,因为Spring boot集成了logging依赖,而logging依赖有log4j2,所以会有冲突,需要把Spring boot的logging给干掉先

  1. 打开项目中的pom.xml文件
  2. 在里面的任意位置右键打开Show Dependencies(或者使用快捷键Ctrl + Alt + Shift + U,我用的是idea的windows的默认快捷键)在这里插入图片描述
  3. Ctrl + f 打开搜索框后直接敲键盘logging(默认不显示搜索框,打开后直接敲就对了)在这里插入图片描述
  4. 然后在空白处右键在这里插入图片描述Exclude即可(管他有没有看到,默认就已经选中了的)
  5. 然后回到配置文件,看到在这里插入图片描述就已经搞好了
  6. 最后添加log4j2依赖,就可以开始搞事情了在这里插入图片描述
    **

    特别需要注意的是!如果有导入parent父项目的,务必检查版本有没有太低
    如果不确定(我也不知道具体是多少版本),就给log4j2设置版本为2.7.2
    (主要是我的父项目版本是2.3.2.RELEASE,log4j2就跟死了一样,所以给log4j2设了个高点版本的)

**

log4j2的配置文件

先上总配置,再一个个分析

<?xml version="1.0" encoding="UTF-8"?>
<Configuration status="fatal">
    <Properties>
        <Property name="baseDir" value="D:\桌面存放位置\Demo\flash_sale\logs"/>
    </Properties>
    <CustomLevels>
        <CustomLevel name="MQLEVEL" intLevel="300"/>
    </CustomLevels>
    <Appenders>
        <Console name="Console" target="SYSTEM_OUT">
            <ThresholdFilter level="info" onMatch="ACCEPT" onMismatch="DENY"/>
            <PatternLayout pattern="[%d{MM:dd HH:mm:ss.SSS}] [%level] [%logger{36}] - %msg%n"/>
        </Console>
        <RollingFile name="test" fileName="${baseDir}/测试一.log"
                     filePattern="${baseDir}/error_%i.log.%d{yyyy-MM-dd}">
            <Filters>
                <ThresholdFilter level="MQLEVEL"/>
            </Filters>
            <PatternLayout pattern="[%d{HH:mm:ss:SSS}] [%p] - %l - %m%n"/>
            <Policies>
                <TimeBasedTriggeringPolicy interval="1" modulate="true"/>
                <SizeBasedTriggeringPolicy size="100 MB"/>
            </Policies>
        </RollingFile>
    </Appenders>

    <Loggers>
        <Root level="debug">
            <AppenderRef ref="Console"/>
            <AppenderRef ref="test"/>
        </Root>
    </Loggers>
</Configuration>

定义输出的位置

<Properties>
	<Property name="baseDir" value="D:\logs\test"/>
</Properties>
// name的名字不要改动

定义级别

<CustomLevels>
	<CustomLevel name="MQLEVEL" intLevel="300"/>
</CustomLevels>
// name名字自己定义
// 级别划分看下面的表自己定

级别表

OFF = 0
FATAL = 100
ERROR = 200
WARN = 300
INFO = 400
DEBUG = 500
TRACE = 600
ALL = Integer.MAX_VALUE

定义输出日志

<!--这里的fileName就是输出的文件名字,里面的{baseDir}就是上面定义的路径-->
<RollingFile name="test" fileName="${baseDir}/test.log"
             filePattern="${baseDir}/error_%i.log.%d{yyyy-MM-dd}">
    <!-- 过滤器 -->
    <Filters>
        <!-- 限制日志级别在  定义的级别名字  及以上 -->
        <ThresholdFilter level="MQLEVEL"/>
    </Filters>
    <!-- 日志格式 -->
    <PatternLayout pattern="[%d{HH:mm:ss:SSS}] [%p] - %l - %m%n"/>
    <!--下面不能少,少了就没有输出-->
    <Policies>
        <!-- 每隔一天转存 -->
        <TimeBasedTriggeringPolicy interval="1" modulate="true"/>
        <!-- 文件大小 -->
        <SizeBasedTriggeringPolicy size="100 MB"/>
    </Policies>
</RollingFile>

自定义的输出的名字放在root下

<Loggers>
    <Root level="debug">
        <AppenderRef ref="Console"/>
        <!--     ↓↓↓↓↓↓↓↓↓     -->
        <AppenderRef ref="test"/>
    </Root>
</Loggers>

Java中发送定义好了的级别日志

LogManager.getLogger("test").log(Level.getLevel("MQLEVEL"),"测试一");
// text为定义的输入消息的名字
// getLevel中是定义的级别
// 后面的就是需要输出的内容

控制台输出
在这里插入图片描述
输出的文件内容
在这里插入图片描述

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值