【SpringBoot】log4j2日志框架整合使用

一、引入maven依赖

Spring Boot默认使用LogBack,但是我们没有看到显示依赖的jar包,其实是因为所在的jar包spring-boot-starter-logging都是作为spring-boot-starter-web或者spring-boot-starter依赖的一部分。
如果这里要使用Log4j2,需要从spring-boot-starter-web中去掉spring-boot-starter-logging依赖,同时显示声明使用Log4j2的依赖jar包,具体如下:

<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>

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-log4j2</artifactId>
</dependency>

另外log4j是之前使用比较广泛的软件,容易与log4j2发生冲突,如果冲突将它从相应的软件里面排除掉,比如:dozer

<dependency>
    <groupId>net.sf.dozer</groupId>
    <artifactId>dozer</artifactId>
    <version>5.4.0</version>
    <exclusions>
        <exclusion>
            <groupId>org.slf4j</groupId>
            <artifactId>slf4j-log4j12</artifactId>
        </exclusion>
    </exclusions>
</dependency>

二、添加配置文件log4j2.xml

在resources目录下新建一个log4j2.xml文件。

<?xml version="1.0" encoding="UTF-8"?>
<configuration>
    <Appenders>
        <Console name="CONSOLE" target="SYSTEM_OUT">
            <PatternLayout charset="UTF-8" pattern="[%-5p] %d %c - %m%n" />
        </Console>

        <RollingFile name="runtimeFile" fileName="./logs/boot-launch.log" filePattern="./logs/boot-launch-%d{yyyy-MM-dd}.log"
                     append="true">
            <PatternLayout pattern="%d{yyyy-MM-dd HH:mm:ss.SSS Z}\t%level\t%class\t%line\t%thread\t%msg%n"/>
            <Policies>
                <TimeBasedTriggeringPolicy/>
            </Policies>
            <!-- 此行以下为自动清理日志的配置 -->
            <DefaultRolloverStrategy>
                <Delete basePath="./logs">
                    <!-- glob 项为需要自动清理日志的pattern -->
                    <IfFileName glob="*.log"/>
                    <!-- 30d 表示自动清理掉30天以前的日志文件 -->
                    <IfLastModified age="30d"/>
                </Delete>
            </DefaultRolloverStrategy>
            <!-- 此行以上为自动清理日志的配置 -->
        </RollingFile>


    </Appenders>

    <Loggers>
        <root level="info">
            <AppenderRef ref="CONSOLE" />
            <AppenderRef ref="runtimeFile" />
        </root>
    </Loggers>
</configuration>

注意:关于log4j2的定时删除如果filePattern的粒度为HH,那么在中如果age=30d则不生效

三、修改application.yml配置

但是这样还不够,Spring Boot并不知道log4j2.xml是干嘛的,需要通过在application.properties文件中显示声明才行

logging:
    config: classpath:log4j2.xml

四、测试

@RestController
@Slf4j
public class LogDemoController {
    //private static Logger log= LoggerFactory.getLogger(LogDemo.class);
 
    @GetMapping("/logdemo")
    public String log(){
        log.trace("======trace");
        log.debug("======debug");
        log.info("======info");
        log.warn("======warn");
        log.error("======error");
        return "logok";
    }
}

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

攻城狮·建哥

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值