springboot整合log4j2 附logback配置文件

引入log4j依赖,去除springbootstarter自带的logging配置(防止冲突)

<!-- 引入log4j2依赖 -->
<dependency> 
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-log4j2</artifactId>
</dependency>
<!-- 去掉springboot默认配置 -->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-****</artifactId>
            <exclusions><!-- 去掉springboot默认配置 -->
                <exclusion>
                    <groupId>org.springframework.boot</groupId>
                    <artifactId>spring-boot-starter-logging</artifactId>
                </exclusion>
            </exclusions>
        </dependency>

添加log4j2xml配置文件

<?xml version="1.0" encoding="UTF-8"?>
<Configuration status="WARN">

    <!--全局参数-->
    <Properties>
        <Property name="pattern">[%-5level] %d{yyyy-MM-dd HH:mm:ss.SSS} %5p %c{1}:%L - %m%n</Property>
        <Property name="logDir">./log</Property>
        <Property name="logDir_historyDir">history</Property>
        <Property name="logDir_historyDir_timeDir">$${date:yyyy-MM-dd}</Property>
        <Property name="logDir_historyDir_timeDir_logFileName">hn-TCP_server_%d{yyyy-MM-dd-HH}-%i.log</Property>
        <Property name="log_level">INFO</Property>
    </Properties>

    <Loggers>

        <Root level="${log_level}">
            <AppenderRef ref="console"/>
            <AppenderRef ref="rolling_file"/>
            <AppenderRef ref="fileAppender"/>
        </Root>
    </Loggers>

    <Appenders>
        <!-- 定义输出到控制台 -->
        <Console name="console" target="SYSTEM_OUT" follow="true">
            <!--控制台只输出level及以上级别的信息-->
            <ThresholdFilter level="INFO" onMatch="ACCEPT" onMismatch="DENY"/>
            <PatternLayout>
                <Pattern>${pattern}</Pattern>
            </PatternLayout>
        </Console>

        <!--配置文件输出-->
        <File name="fileAppender" fileName="${logDir}/all_hn-TCP_server_log4j2.log">
        <!--配置文件输出格式-->
            <PatternLayout pattern="[%-5level] %d{yyyy-MM-dd HH:mm:ss.SSS} %m%n"></PatternLayout>
        </File>

        <!-- 同一来源的Appender可以定义多个RollingFile,定义按天存储日志 -->
        <RollingFile name="rolling_file"
                     fileName="${logDir}/hn-TCP_server_lastTime.log"
                     filePattern="${logDir}/${logDir_historyDir}/${logDir_historyDir_timeDir}/${logDir_historyDir_timeDir_logFileName}">

            <!--日志消息格式-->
            <PatternLayout>
                <Pattern>${pattern}</Pattern>
            </PatternLayout>

            <Policies>
                <!-- 在系统启动时,触发拆分规则,产生一个日志文件-->
                <OnStartupTriggeringPolicy/>
                <!-- 按照时间节点进行拆分 拆分规则就是RollingFile标签的filePattern属性-->
                <TimeBasedTriggeringPolicy interval="1" modulate="true"/>
                <!-- 按照文件大小来拆分-->
                <SizeBasedTriggeringPolicy size="300MB"/>
            </Policies>

            <!-- 日志保留策略,配置只保留3个月(2400H) -->
            <DefaultRolloverStrategy max="500">
                <Delete basePath="${logDir}/${logDir_historyDir}/" maxDepth="2">
                    <IfFileName glob="*/*.log" />
                    <!-- 设置保留时间规则(保留)-->
                    <IfLastModified age="2400H" />
                </Delete>
            </DefaultRolloverStrategy>

        </RollingFile>
    </Appenders>
</Configuration>

如果是logback 配置文件如下

<?xml version="1.0" encoding="UTF-8"?>
<configuration>
    <property name="log.path" value="./logs"/>
    <!--    <property name="console.log.pattern"-->
    <!--              value="%red(%d{yyyy-MM-dd HH:mm:ss}) %green([%thread]) %highlight(%-5level) %boldMagenta(%logger{36}%n) - %msg%n"/>-->
    <property name="console.log.pattern"
              value="%d{yyyy-MM-dd HH:mm:ss.SSS} %highlight(%-5level) %boldMagenta(线程名--[%t]) %cyan(类名: %c) %blue(方法名:%M --%L): %msg%n"/>
    <property name="log.pattern" value="%d{yyyy-MM-dd HH:mm:ss} [%thread] %-5level %logger{36} - %msg%n"/>

    <!-- 控制台输出 -->
    <appender name="console" class="ch.qos.logback.core.ConsoleAppender">
        <encoder>
            <pattern>${console.log.pattern}</pattern>
            <charset>utf-8</charset>
        </encoder>
    </appender>

    <!-- 系统日志输出 -->
    <appender name="file_info" class="ch.qos.logback.core.rolling.RollingFileAppender">
        <file>${log.path}/sys-info.log</file>
        <!-- 循环政策:基于时间创建日志文件 -->
        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
            <!-- 日志文件名格式 -->
            <fileNamePattern>${log.path}/sys-info.%d{yyyy-MM-dd}.log</fileNamePattern>
            <!-- 日志最大的历史 60天 -->
            <maxHistory>60</maxHistory>
        </rollingPolicy>
        <encoder>
            <pattern>${log.pattern}</pattern>
        </encoder>
        <filter class="ch.qos.logback.classic.filter.LevelFilter">
            <!-- 过滤的级别 -->
            <level>INFO</level>
            <!-- 匹配时的操作:接收(记录) -->
            <onMatch>ACCEPT</onMatch>
            <!-- 不匹配时的操作:拒绝(不记录) -->
            <onMismatch>DENY</onMismatch>
        </filter>
    </appender>

    <appender name="file_error" class="ch.qos.logback.core.rolling.RollingFileAppender">
        <file>${log.path}/sys-error.log</file>
        <!-- 循环政策:基于时间创建日志文件 -->
        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
            <!-- 日志文件名格式 -->
            <fileNamePattern>${log.path}/sys-error.%d{yyyy-MM-dd}.log</fileNamePattern>
            <!-- 日志最大的历史 60天 -->
            <maxHistory>60</maxHistory>
        </rollingPolicy>
        <encoder>
            <pattern>${log.pattern}</pattern>
        </encoder>
        <filter class="ch.qos.logback.classic.filter.LevelFilter">
            <!-- 过滤的级别 -->
            <level>ERROR</level>
            <!-- 匹配时的操作:接收(记录) -->
            <onMatch>ACCEPT</onMatch>
            <!-- 不匹配时的操作:拒绝(不记录) -->
            <onMismatch>DENY</onMismatch>
        </filter>
    </appender>

    <!-- 用户访问日志输出  -->
    <appender name="sys-user" class="ch.qos.logback.core.rolling.RollingFileAppender">
        <file>${log.path}/sys-user.log</file>
        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
            <!-- 按天回滚 daily -->
            <fileNamePattern>${log.path}/sys-user.%d{yyyy-MM-dd}.log</fileNamePattern>
            <!-- 日志最大的历史 60天 -->
            <maxHistory>60</maxHistory>
        </rollingPolicy>
        <encoder>
            <pattern>${log.pattern}</pattern>
        </encoder>
    </appender>

    <!-- 系统模块日志级别控制  -->
    <logger name="com.meilingcloud" level="info"/>
    <!-- Spring日志级别控制  -->
    <logger name="org.springframework" level="warn"/>

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

    <!--系统操作日志-->
    <root level="info">
        <appender-ref ref="file_info"/>
        <appender-ref ref="file_error"/>
    </root>

    <!--系统用户操作日志-->
    <logger name="sys-user" level="info">
        <appender-ref ref="sys-user"/>
    </logger>
</configuration>
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容