SpringBoot專案使用log4j2
阿新 • • 發佈:2020-12-24
技術標籤:SpringBootloglog4j2整合log4j專案使用log4jlog4j log4j2專案整合log4j2
pom.xml新增依賴:
<!-- springboot預設是用logback的日誌框架的,所以需要排除logback,不然會出現jar依賴衝突的報錯 --> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter</artifactId> <exclusions> <exclusion> <!-- exclude掉spring-boot的預設log配置 --> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-logging</artifactId> </exclusion> </exclusions> </dependency> <!-- log4j日誌 --> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-log4j2</artifactId> </dependency> <!-- 有其他jar依賴log4j --> <dependency> <groupId>org.apache.logging.log4j</groupId> <artifactId>log4j-1.2-api</artifactId> </dependency> <dependency> <groupId>com.lmax</groupId> <artifactId>disruptor</artifactId> <version>3.3.6</version> </dependency>
application.properties新增配置:
#Log4j2
logging.config=classpath:log4j2.xml
src/main/resources新增XML檔案:log4j2.xml
注意:
需要將xml中 "XXX" 進行更改,如:"logs/XXX-info.log" 建議改為 "logs/當前專案名-info.log"(共計12處)
需要將 "com.test.dao" 更改為自己的專案中的dao介面所在包名(共計1處)
<?xml version="1.0" encoding="UTF-8"?> <configuration status="debug"> <appenders> <!--這個輸出控制檯的配置--> <Console name="STDOUT"> <!--控制檯只輸出level及以上級別的資訊(onMatch),其他的直接拒絕(onMismatch)--> <ThresholdFilter level="info" onMatch="ACCEPT" onMismatch="DENY" /> <!-- 輸出日誌的格式--> <!--<PatternLayout pattern="%d{yyyy-MM-dd HH:mm:ss.SSS} [%t] %-5level [%logger{50}:%L] [${spring.zipkin.service.name:${spring.application.name:-}},%X{X-B3-TraceId:-},%X{X-B3-SpanId:-},%X{X-Span-Export:-}] - %msg%n" charset="UTF-8"/>--> <!--上面的日誌格式太長,一屏看不了要拉動滾動條,精簡一下--> <PatternLayout pattern="%d{yyyy-MM-dd HH:mm:ss} %-5level [%logger{50}.%M:%L] - %msg%n" charset="UTF-8"/> </Console> <!--sql專用輸出--> <Console name="STDOUT2"> <ThresholdFilter level="debug" onMatch="ACCEPT" onMismatch="DENY" /> <PatternLayout pattern="%d{yyyy-MM-dd HH:mm:ss} %-5level [%logger{50}:%L] - %msg%n" charset="UTF-8"/> </Console> <RollingRandomAccessFile name="FILE-INFO" fileName="logs/XXX-info.log" filePattern="logs/XXX-info.%d{yyyy-MM-dd-HH}.log"> <ThresholdFilter level="info" onMatch="ACCEPT" onMismatch="DENY" /> <PatternLayout pattern="%d{yyyy-MM-dd HH:mm:ss.SSS} [%t] %-5level [%logger{50}:%L] [${spring.zipkin.service.name:${spring.application.name:-}},%X{X-B3-TraceId:-},%X{X-B3-SpanId:-},%X{X-Span-Export:-}] %tcid - %msg%n" charset="UTF-8" /> <TimeBasedTriggeringPolicy interval="1" /> <DefaultRolloverStrategy max="1" > <Delete basePath="logs" maxDepth="2"> <IfFileName glob="*XXX-info.*.log" /> <IfLastModified age="1d" /> </Delete> </DefaultRolloverStrategy> </RollingRandomAccessFile> <RollingRandomAccessFile name="FILE-DEBUG" fileName="logs/XXX-debug.log" filePattern="logs/XXX-debug.%d{yyyy-MM-dd-HH}.log"> <ThresholdFilter level="debug" onMatch="ACCEPT" onMismatch="DENY" /> <PatternLayout pattern="%d{yyyy-MM-dd HH:mm:ss.SSS} [%t] %-5level [%logger{50}:%L] [${spring.zipkin.service.name:${spring.application.name:-}},%X{X-B3-TraceId:-},%X{X-B3-SpanId:-},%X{X-Span-Export:-}] %tcid - %msg%n" charset="UTF-8" /> <TimeBasedTriggeringPolicy interval="1" /> <DefaultRolloverStrategy max="1" > <Delete basePath="logs" maxDepth="2"> <IfFileName glob="*XXX-debug.*.log" /> <IfLastModified age="1d" /> </Delete> </DefaultRolloverStrategy> </RollingRandomAccessFile> <RollingRandomAccessFile name="FILE-WARN" fileName="logs/XXX-warn.log" filePattern="logs/XXX-warn.%d{yyyy-MM-dd-HH}.log"> <ThresholdFilter level="warn" onMatch="ACCEPT" onMismatch="DENY" /> <PatternLayout pattern="%d{yyyy-MM-dd HH:mm:ss.SSS} [%t] %-5level [%logger{50}:%L] [${spring.zipkin.service.name:${spring.application.name:-}},%X{X-B3-TraceId:-},%X{X-B3-SpanId:-},%X{X-Span-Export:-}] %tcid - %msg%n" charset="UTF-8" /> <TimeBasedTriggeringPolicy interval="1" /> <DefaultRolloverStrategy max="1" > <Delete basePath="logs" maxDepth="2"> <IfFileName glob="*XXX-warn.*.log" /> <IfLastModified age="1d" /> </Delete> </DefaultRolloverStrategy> </RollingRandomAccessFile> <RollingRandomAccessFile name="FILE-ERROR" fileName="logs/XXX-error.log" filePattern="logs/XXX-error.%d{yyyy-MM-dd-HH}.log"> <ThresholdFilter level="error" onMatch="ACCEPT" onMismatch="DENY" /> <PatternLayout pattern="%d{yyyy-MM-dd HH:mm:ss.SSS} [%t] %-5level [%logger{50}:%L] [${spring.zipkin.service.name:${spring.application.name:-}},%X{X-B3-TraceId:-},%X{X-B3-SpanId:-},%X{X-Span-Export:-}] %tcid - %msg%n" charset="UTF-8" /> <TimeBasedTriggeringPolicy interval="1" /> <DefaultRolloverStrategy max="1" > <Delete basePath="logs" maxDepth="2"> <IfFileName glob="*XXX-error.*.log" /> <IfLastModified age="1d" /> </Delete> </DefaultRolloverStrategy> </RollingRandomAccessFile> </appenders> <loggers> <!-- 將業務dao介面填寫進去,並用控制檯輸出即可 --> <AsyncLogger name="com.test.dao" level="debug" additivity="false"> <AppenderRef ref="STDOUT2"/> </AsyncLogger> <!--includeLocation="true" :打印出行號--> <AsyncRoot level="debug" includeLocation="true"> <!--<AppenderRef ref="FILE-INFO" /> <AppenderRef ref="FILE-WARN" /> <AppenderRef ref="FILE-ERROR" />--> <AppenderRef ref="STDOUT" /> </AsyncRoot> </loggers> </configuration>