聊聊springboot中整合log4g2的問(wèn)題
1.導(dǎo)入jar
springboot默認(rèn)是用logback的日志框架的,所以需要排除logback,不然會(huì)出現(xiàn)jar依賴(lài)沖突的報(bào)錯(cuò)。
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
<exclusions><!-- 去掉springboot默認(rèn)配置 -->
<exclusion>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-logging</artifactId>
</exclusion>
</exclusions>
</dependency>
<dependency> <!-- 引入log4j2依賴(lài) -->
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-log4j2</artifactId>
</dependency>
2.配置文件
1.如果自定義了文件名,需要在application.yml中配置
2.默認(rèn)名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信息,默認(rèn)是OFF -->
<configuration status="off" monitorInterval="60">
<!-- <properties>-->
<!-- <property name="projectName">-->
<!-- riiot-->
<!-- </property>-->
<!-- </properties>-->
<appenders>
<!-- 開(kāi)發(fā)環(huán)境用 -->
<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>
<!-- 輸出日志到文件 每天一個(gè)文件(ERROR-FATAL級(jí)別) -->
<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>
<!-- 輸出日志到文件 每天一個(gè)文件(WARN級(jí)別) -->
<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>
<!-- 輸出日志到文件 每天一個(gè)文件(INFO級(jí)別) -->
<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>
<!-- 輸出日志到文件 每天一個(gè)文件(INFO級(jí)別) -->
<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>
<!-- 輸出日志到文件 每天一個(gè)文件(ERROR級(jí)別) -->
<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>
<!-- 輸出日志到文件 每天一個(gè)文件(ERROR級(jí)別) -->
<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>
<!-- 啟動(dòng)日志 -->
<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>
<!– 異步發(fā)送kafka –>
<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>
<!– 異步發(fā)送kafka –>
<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正常執(zhí)行,異常分別寫(xiě)到不同的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>
<!-- 過(guò)濾springframework輸出,提高啟動(dòng)速度 (生產(chǎn)環(huán)境中需要整體刪除)-->
<logger name="org.springframework" additivity="false" level="warn">
<appender-ref ref="console" />
</logger>
<!-- 啟動(dòng)日志單獨(dú)輸出 -->
<logger name="com.cmsr.Launcher" additivity="false" level="info">
<appender-ref ref="BootLog" />
<appender-ref ref="console" />
</logger>
<!-- 定義全局。其他包的日志只輸出到控制臺(tái),不輸出到日志文件 -->
<root level="error">
<appender-ref ref="SysErrorDailyRollingFile" />
<appender-ref ref="console" />
</root>
</loggers>
</configuration>
到此這篇關(guān)于springboot中整合log4g2的文章就介紹到這了,更多相關(guān)springboot整合log4g2內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Java編程實(shí)現(xiàn)用hash方法切割文件
這篇文章主要介紹了Java編程實(shí)現(xiàn)用hash方法切割文件,簡(jiǎn)單介紹了hash的概念,然后分享了使用方法示例,具有一定借鑒價(jià)值,需要的朋友可以了解下。2017-12-12
Java簡(jiǎn)易登錄注冊(cè)功能實(shí)現(xiàn)代碼解析
這篇文章主要介紹了Java簡(jiǎn)易登錄注冊(cè)功能實(shí)現(xiàn)代碼解析,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-06-06
利用Spring?boot+LogBack+MDC實(shí)現(xiàn)鏈路追蹤
這篇文章主要介紹了利用Spring?boot+LogBack+MDC實(shí)現(xiàn)鏈路追蹤,MDC?可以看成是一個(gè)與當(dāng)前線程綁定的哈希表,可以往其中添加鍵值對(duì),下文詳細(xì)介紹需要的小伙伴可以參考一下2022-04-04
ThreadLocal內(nèi)存泄漏常見(jiàn)要點(diǎn)解析
這篇文章主要介紹了ThreadLocal內(nèi)存泄漏常見(jiàn)要點(diǎn),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-11-11
java框架基礎(chǔ)之SPI機(jī)制實(shí)現(xiàn)及源碼解析
這篇文章主要為大家介紹了java框架基礎(chǔ)之SPI機(jī)制實(shí)現(xiàn)及源碼解析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-09-09

