Spring Boot 3中一套可以直接用于生产环境的Log4J2日志配置

文章目录

    • 一 Log4J2 相关概念及基本特点
    • 二 Spring Boot3 中启用Log4J2的pom.xml配置
    • 三 application.properties 的配置
    • 四 完整配置

一 Log4J2 相关概念及基本特点

Log4J2是Apache Log4j的升级版,参考了logback的一些优秀的设计,并且修复了一些问题,因此带来了一些重大的提升。
Logger:日志记录器,用于标识日志的来源。常见的有两种:Root和Logger。Root节点用来指定项目的根日志,如果没有单独指定Logger,那么就会默认使用该Root日志输出
Appender:日志输出器,用于将日志记录输出到指定的目标。常见的有三种子节点:Console、RollingFile、File。Console节点用来定义输出到控制台的Appender;RollingFile节点用来定义超过指定条件自动删除旧的创建新的Appender;File节点用来定义输出到指定位置的文件的Appender。
Layout:日志格式化器,用于定义日志记录的输出格式。Root节点用来指定项目的根日志,如果没有单独指定Logger,那么就会默认使用该Root日志输出。

二 Spring Boot3 中启用Log4J2的pom.xml配置

    <dependencies>
        <dependency>
            <groupId>org.springframework.bootgroupId>
            <artifactId>spring-boot-starter-webartifactId>
            <exclusions>
                <exclusion>
                    <groupId>org.springframework.bootgroupId>
                    <artifactId>spring-boot-starter-loggingartifactId>
                exclusion>
            exclusions>
        dependency>
        <dependency>
            <groupId>org.springframework.bootgroupId>
            <artifactId>spring-boot-starter-log4j2artifactId>
        dependency>

排除原依赖中的日志相关包,单独引入Log4J2依赖。

三 application.properties 的配置

# 控制台输出的字符集
logging.charset.console=UTF-8
# 日志写入文件的字符集
logging.charset.file=UTF-8
# Log4J2自定义配置的路径,放置到resources目录下
logging.config=classpath:logback.xml
# 应用程序包的路径
logging.level.com.test=INFO
# 日志存放路径
logging.file.path=logs/test.log

四 完整配置

配置文件的名称为:logback.xml,放置于resources目录下。


 
<Configuration status="WARN" monitorInterval="30">
    <Properties>
        <Property name="logDir">logsProperty>
        <Property name="logFile">cmamsProperty>
        <Property name="level">DEBUGProperty>
    Properties>
    <Appenders>
        <Console name="Console" target="SYSTEM_OUT">
            <PatternLayout pattern="[%-4level] [%date{yyyy-MM-dd HH:mm:ss.SSS}] [%thread] %logger{96}:%line - %msg%n"/>
            
            <ThresholdFilter level="INFO" onMatch="ACCEPT" onMismatch="DENY"/>
        Console>
        <RollingFile name="File" fileName="${logDir}/${logFile}.log"
                     filePattern="${logDir}/${logFile}-%d{yyyy-MM-dd}-%i.log.gz">
            
            <PatternLayout pattern="[%-4level] [%date{yyyy-MM-dd HH:mm:ss.SSS}] [%thread] %logger{96}:%line - %msg%n"/>
            
            <Policies>
                
                <TimeBasedTriggeringPolicy/>
                
                <SizeBasedTriggeringPolicy size="64MB"/>
            Policies>
            
            <DefaultRolloverStrategy max="20">
                
                <Delete basePath="${logDir}" maxDepth="2">
                    
                    <IfFileName glob="*.log.gz">
                        <IfLastModified age="60d">
                            <IfAny>
                                
                                <IfAccumulatedFileSize exceeds="5GB"/>
                                
                                <IfAccumulatedFileCount exceeds="100"/>
                            IfAny>
                        IfLastModified>
                    IfFileName>
                Delete>
            DefaultRolloverStrategy>
        RollingFile>
    Appenders>
    <Loggers>
    
        <Logger name="com.cxwn.cmams" level="${level}" additivity="false">
            <AppenderRef ref="File"/>
            <AppenderRef ref="Console"/>
        Logger>
        <Logger name="org.springframework" level="ERROR" additivity="false">
            <AppenderRef ref="Console"/>
            <AppenderRef ref="File"/>
        Logger>
        <Root level="WARN">
            <AppenderRef ref="Console"/>
            <AppenderRef ref="File"/>
        Root>
    Loggers>
Configuration>

你可能感兴趣的:(Java,spring,boot,log4j,后端,java,日志)