聊聊springboot中整合log4g2的问题

2022-07-21,,,

1.导入jar

springboot默认是用logback的日志框架的,所以需要排除logback,不然会出现jar依赖冲突的报错。

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

2.配置文件

1.如果自定义了文件名,需要在application.yml中配置

2.默认名log4j2-spring.xml,就省下了在application.yml中配置
在applicaiton.yaml中添加配置

logging:
  #日志文件
  config: classpath:log4g2.xml
  level:
    com.alibaba.nacos.client.config.impl: warn
    cn.jay.repository: trace
  file:
    #${file.name} 后期可以改成${spring.application.name}
    path: /log/${file.name}
file:
  name: dome

在config中配置log4g2.xml文件

<?xml version="1.0" encoding="utf-8"?>
<!-- status="off",可以去掉,它的含义为是否记录log4j2本身的event信息,默认是off -->
<configuration status="off" monitorinterval="60">
    <!--	<properties>-->
    <!--		<property name="projectname">-->
    <!--			riiot-->
    <!--		</property>-->
    <!--	</properties>-->


    <appenders>
        <!-- 开发环境用 -->
        <console name="debug_console" target="system_out">
            <patternlayout pattern="[%d{yyyy-mm-dd hh:mm:ss.sss} %-5p] [%traceid] [%t] {%c}-%m%n"/>
            <filters>
                <thresholdfilter level="debug"/>
                <thresholdfilter level="info" onmatch="deny" onmismatch="neutral"/>
            </filters>
        </console>
        <console name="console" target="system_out">
            <patternlayout pattern="[%d{yyyy-mm-dd hh:mm:ss.sss} %-5p] [%traceid] [%t] {%c}-%m%n"/>
            <filters>
                <thresholdfilter level="info"/>
            </filters>
        </console>

        <!-- 输出日志到文件 每天一个文件(error-fatal级别) -->
        <rollingrandomaccessfile name="apperrordailyrollingfile" filename="${sys:log_path}/apperror.log" append="true" bufferedio="false" buffersize="256"
                                 filepattern="${sys:log_path}/apperror.log.%d{yyyy-mm-dd}.log">
            <patternlayout pattern="[%d{yyyy-mm-dd hh:mm:ss.sss} %-5p] [%traceid] [%t] {%c}-%m%n" />
            <filters>
                <thresholdfilter level="error"/>
            </filters>
            <policies>
                <timebasedtriggeringpolicy modulate="true" interval="1"/>
            </policies>
        </rollingrandomaccessfile>

        <!-- 输出日志到文件 每天一个文件(warn级别) -->
        <rollingrandomaccessfile name="appwarndailyrollingfile" filename="${sys:log_path}/appwarn.log" append="true" bufferedio="true" buffersize="10240" immediateflush="false"
                                 filepattern="${sys:log_path}/appwarn.log.%d{yyyy-mm-dd}.log">
            <patternlayout pattern="[%d{yyyy-mm-dd hh:mm:ss.sss} %-5p] [%traceid] [%t] {%c}-%m%n" />
            <filters>
                <thresholdfilter level="warn"/>
                <thresholdfilter level="error" onmatch="deny" onmismatch="neutral"/>
            </filters>
            <policies>
                <timebasedtriggeringpolicy modulate="true" interval="1"/>
            </policies>
        </rollingrandomaccessfile>

        <!-- 输出日志到文件 每天一个文件(info级别) -->
        <rollingrandomaccessfile name="appinfodailyrollingfile" filename="${sys:log_path}/appaccess.log" append="true" bufferedio="true" buffersize="409600" immediateflush="false"
                                 filepattern="${sys:log_path}/appaccess.log.%d{yyyy-mm-dd}.log">
            <patternlayout pattern="[%d{yyyy-mm-dd hh:mm:ss.sss} %-5p] [%traceid] [%t] {%c}-%m%n" />
            <filters>
                <thresholdfilter level="info"/>
                <thresholdfilter level="warn" onmatch="deny" onmismatch="neutral"/>
            </filters>
            <policies>
                <timebasedtriggeringpolicy modulate="true" interval="1"/>
            </policies>
        </rollingrandomaccessfile>

        <!-- 输出日志到文件 每天一个文件(info级别) -->
        <rollingrandomaccessfile name="dbaccessdailyrollingfile" filename="${sys:log_path}/dbaccess.log" append="true" bufferedio="true" buffersize="409600" immediateflush="false"
                                 filepattern="${sys:log_path}/dbaccess.log.%d{yyyy-mm-dd}.log">
            <patternlayout pattern="[%d{yyyy-mm-dd hh:mm:ss.sss} %-5p] [%traceid] [%t] {%c}-%m%n" />
            <filters>
                <thresholdfilter level="info"/>
                <thresholdfilter level="warn" onmatch="deny" onmismatch="neutral"/>
            </filters>
            <policies>
                <timebasedtriggeringpolicy modulate="true" interval="1"/>
            </policies>
        </rollingrandomaccessfile>

        <!-- 输出日志到文件 每天一个文件(error级别) -->
        <rollingrandomaccessfile name="dberrordailyrollingfile" filename="${sys:log_path}/dberror.log" append="true" bufferedio="false" buffersize="256"
                                 filepattern="${sys:log_path}/dberror.log.%d{yyyy-mm-dd}.log">
            <patternlayout pattern="[%d{yyyy-mm-dd hh:mm:ss.sss} %-5p] [%traceid] [%t] {%c}-%m%n" />
            <filters>
                <thresholdfilter level="warn"/>
            </filters>
            <policies>
                <timebasedtriggeringpolicy modulate="true" interval="1"/>
            </policies>
        </rollingrandomaccessfile>

        <!-- 输出日志到文件 每天一个文件(error级别) -->
        <rollingrandomaccessfile name="syserrordailyrollingfile" filename="${sys:log_path}/syserror.log" append="true" bufferedio="false"
                                 filepattern="${sys:log_path}/syserror.log.%d{yyyy-mm-dd}.log">
            <patternlayout pattern="[%d{yyyy-mm-dd hh:mm:ss.sss} %-5p] [%traceid] [%t] {%c}-%m%n" />
            <filters>
                <thresholdfilter level="warn"/>
            </filters>
            <policies>
                <timebasedtriggeringpolicy modulate="true" interval="1"/>
            </policies>
        </rollingrandomaccessfile>

        <!-- 启动日志 -->
        <rollingrandomaccessfile name="bootlog" filename="${sys:log_path}/boot.log" append="false" bufferedio="false"
                                 filepattern="${sys:log_path}/boot.log.%d{yyyy-mm-dd}.log">
            <patternlayout pattern="[%d{yyyy-mm-dd hh:mm:ss.sss} %-5p] [%traceid] [%t] {%c}-%m%n" />
            <filters>
                <thresholdfilter level="info"/>
            </filters>
            <policies>
                <timebasedtriggeringpolicy modulate="true" interval="1"/>
            </policies>
        </rollingrandomaccessfile>

     <!--   <kafka name="synckafka" topic="logs" syncsend="false">
            <patternlayout pattern="[%d{yyyy-mm-dd hh:mm:ss.sss} %-5p] [%traceid] [riiot] [${jar.name}] [%x{ip}] [dev] [%t] {%c}-%m"/>
            <property name="bootstrap.servers">192.168.1.49:9092</property>
            <property name="acks">0</property>
            <property name="compression.type">gzip</property>
            <property name="max.block.ms">10000</property>
            <filters>
                <thresholdfilter level="info"/>
            </filters>
        </kafka>
        &lt;!&ndash; 异步发送kafka &ndash;&gt;
        <async name="kafka" buffersize="512" blocking="false">
            <appenderref ref="synckafka"/>
        </async>

        <kafka name="kafkaerrlog" topic="errlogtopic" syncsend="false">
            <patternlayout pattern="[%d{yyyy-mm-dd hh:mm:ss.sss} %-5p] [%traceid] [riiot] [${jar.name}] [%x{ip}] [dev] [%t] {%c}-%m"/>
            <property name="bootstrap.servers">192.168.1.49:9092</property>
            <property name="acks">0</property>
            <property name="compression.type">gzip</property>
            <filters>
                <thresholdfilter level="error"/>
            </filters>
        </kafka>
        &lt;!&ndash; 异步发送kafka &ndash;&gt;
        <async name="asynckafkaerrlog" buffersize="512" blocking="false">
            <appenderref ref="kafkaerrlog"/>
        </async>
-->
    </appenders>

    <loggers>
        <!-- 只把包名是com.cmsr的日志输出到文件 -->
        <logger name="com.cmsr" additivity="false" level="debug">
            <appender-ref ref="apperrordailyrollingfile" />
            <appender-ref ref="appwarndailyrollingfile" />
            <appender-ref ref="appinfodailyrollingfile" />
            <appender-ref ref="console" />

            <appender-ref ref="debug_console" />
        </logger>

        <!-- 只把包名是com.cmsr.sicp.common.mybatis(db正常执行,异常分别写到不同的log文件)的日志输出到文件 -->
        <logger name="com.cmsr.sicp.common.mybatis" additivity="false" level="debug">
            <appender-ref ref="dbaccessdailyrollingfile" />
            <appender-ref ref="dberrordailyrollingfile" />
            <appender-ref ref="console" />

        </logger>

        <!-- 过滤springframework输出,提高启动速度 (生产环境中需要整体删除)-->
        <logger name="org.springframework" additivity="false" level="warn">
            <appender-ref ref="console" />
        </logger>

        <!-- 启动日志单独输出 -->
        <logger name="com.cmsr.launcher" additivity="false" level="info">
            <appender-ref ref="bootlog" />
            <appender-ref ref="console" />
        </logger>

        <!-- 定义全局。其他包的日志只输出到控制台,不输出到日志文件 -->
        <root level="error">
            <appender-ref ref="syserrordailyrollingfile" />
            <appender-ref ref="console" />

        </root>
    </loggers>
</configuration>

到此这篇关于springboot中整合log4g2的文章就介绍到这了,更多相关springboot整合log4g2内容请搜索以前的文章或继续浏览下面的相关文章希望大家以后多多支持!

《聊聊springboot中整合log4g2的问题.doc》

下载本文的Word格式文档,以方便收藏与打印。