Spring Boot 集成 Log4j 日誌框架
Java 有很多日誌系統,如 Java Util Logging, Log4J, Log4J2, Logback 等。Spring Boot 默認的日誌框架是 Java Util Logging,並且 Spring Boot 也支持 Log4J、Logback 這些比較流行的日誌框架。
Java 應用中,日誌一般分爲以下 5 個級別:
- ERROR 錯誤信息
- WARN 警告信息
- INFO 一般信息
- DEBUG 調試信息
- TRACE 跟蹤信息
Spring Boot 默認日誌框架
默認情況下,Spring Boot 使用 logback 作爲應用日誌框架。因爲 spring-boot-starter 其中包含了 spring-boot-starter-logging,該依賴內容就是 Spring Boot 默認的日誌框架 Logback。
配置日誌
在 application.properties
文件中添加配置,如:
# 日誌輸出級別是 info
logging.level.root = INFO
如果想控制特定包的輸出級別,也可以配置 配置 logging.level.* 來決定哪些包的輸出級別。
# 日誌輸出級別是 info
logging.level.root = INFO
logging.level.org.springframework.web = DEBUG
輸出日誌文件
默認情況下, Spring Boot 日誌只會輸出到控制檯,並不會寫入到日誌文件。我們可以在application.properites 文件中配置 logging.file 文件名稱和 logging.path 文件路徑,將日誌輸出到日誌文件中。
# 日誌輸出級別是 info
logging.level.root = INFO
logging.level.org.springframework.web = DEBUG
logging.path = ${user.home}/logs
logging.file = logging.log
使用 Log4j 記錄日誌
添加依賴項
在 pom.xml 文件中添加 Log4j 依賴,並移除默認的 Logback 依賴。
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter</artifactId>
<exclusions>
<!-- 排除自帶的logback依賴 -->
<exclusion>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-logging</artifactId>
</exclusion>
</exclusions>
</dependency>
<!-- spring boot-log4j -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-log4j</artifactId>
</dependency>
新建 log4j.propertie 文件
在 resource
文件下,新建 log4j.properties
文件用於日誌配置。
# 定義輸出的日誌級別
log4j.rootLogger=info,error,CONSOLE,DEBUG
# 表示將輸出位置設定在控制檯
log4j.appender.CONSOLE=org.apache.log4j.ConsoleAppender
log4j.appender.CONSOLE.layout=org.apache.log4j.PatternLayout
log4j.appender.CONSOLE.layout.ConversionPattern=%d{yyyy-MM-dd-HH-mm} [%t] [%c] [%p] - %m%n
log4j.logger.info=info
log4j.appender.info=org.apache.log4j.DailyRollingFileAppender
log4j.appender.info.layout=org.apache.log4j.PatternLayout
log4j.appender.info.layout.ConversionPattern=%d{yyyy-MM-dd-HH-mm} [%t] [%c] [%p] - %m%n
log4j.appender.info.datePattern='.'yyyy-MM-dd
log4j.appender.info.Threshold = info
log4j.appender.info.append=true
# 指定info類型的日誌保存地址
log4j.appender.info.File=g:/logs/info/api_services_info
log4j.logger.error=error
log4j.appender.error=org.apache.log4j.DailyRollingFileAppender
log4j.appender.error.layout=org.apache.log4j.PatternLayout
log4j.appender.error.layout.ConversionPattern=%d{yyyy-MM-dd-HH-mm} [%t] [%c] [%p] - %m%n
log4j.appender.error.datePattern='.'yyyy-MM-dd
log4j.appender.error.Threshold = error
log4j.appender.error.append=true
# 指定error類型的日誌保存地址
#log4j.appender.error.File=/home/admin/pms-api-services/logs/error/api_services_error
log4j.appender.error.File=g:/logs/error/api_services_error
log4j.logger.DEBUG=DEBUG
log4j.appender.DEBUG=org.apache.log4j.DailyRollingFileAppender
log4j.appender.DEBUG.layout=org.apache.log4j.PatternLayout
log4j.appender.DEBUG.layout.ConversionPattern=%d{yyyy-MM-dd-HH-mm} [%t] [%c] [%p] - %m%n
log4j.appender.DEBUG.datePattern='.'yyyy-MM-dd
log4j.appender.DEBUG.Threshold = DEBUG
log4j.appender.DEBUG.append=true
# 指定DEBUG類型的日誌保存地址
log4j.appender.DEBUG.File=g:/logs/debug/api_services_debug
後記
由於自身能力有限,若有錯誤或者不當之處,還請大家批評指正,一起學習交流!
GitHub 源碼地址:springboot-log4j