前言
Spring Boot在所有內部日志中使用Commons Logging,但是默認配置也提供了對常用日志的支持,如:Java Util Logging,Log4J, Log4J2和Logback。每種Logger都可以通過配置使用控制臺或者文件輸出日志內容。本文主要介紹了在Spring Boot中如何使用log4j記錄日志,感興趣的來一起學習學習。
引入log4j依賴
在創建Spring Boot工程時,我們引入了spring-boot-starter,其中包含了spring-boot-starter-logging,該依賴內容就是
Spring Boot默認的日志框架Logback,所以我們在引入log4j之前,需要先排除該包的依賴,再引入log4j的依賴,就像下面這樣:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
|
<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter</artifactId> <exclusions> <exclusion> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-logging</artifactId> </exclusion> </exclusions> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-log4j</artifactId> </dependency> |
配置log4j.properties
在引入了log4j依賴之后,只需要在src/main/resources目錄下加入log4j.properties配置文件,就可以開始對應用的日志進行配置使用。
控制臺輸出
通過如下配置,設定root日志的輸出級別為INFO,appender為控制臺輸出stdout
1
2
3
4
5
6
|
# LOG4J配置 log4j.rootCategory=INFO, stdout # 控制臺輸出 log4j.appender.stdout=org.apache.log4j.ConsoleAppender log4j.appender.stdout.layout=org.apache.log4j.PatternLayout log4j.appender.stdout.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss,SSS} %5p %c{ 1 }:%L - %m%n |
輸出到文件
在開發環境,我們只是輸出到控制臺沒有問題,但是到了生產或測試環境,或許持久化日志內容,方便追溯問題原因。
可以通過添加如下的appender內容,按天輸出到不同的文件中去,同時還需要為log4j.rootCategory添加名為file的appender,
這樣root日志就可以輸出到logs/all.log文件中了。
1
2
3
4
5
6
7
8
|
# log4j.rootCategory=INFO, stdout, file # root日志輸出 log4j.appender.file=org.apache.log4j.DailyRollingFileAppender log4j.appender.file.file=logs/all.log log4j.appender.file.DatePattern= '.' yyyy-MM-dd log4j.appender.file.layout=org.apache.log4j.PatternLayout log4j.appender.file.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss,SSS} %5p %c{ 1 }:%L - %m%n |
分類輸出
1.可以按不同package進行輸出。通過定義輸出到logs/my.log的appender,并對com.didispace包下的日志級別設定
為DEBUG級別、appender設置為輸出到logs/my.log的名為didifile的appender。
1
2
3
4
5
6
7
8
|
# com.juzi包下的日志配置 log4j.category.com.juzi=DEBUG, didifile # com.didispace下的日志輸出 log4j.appender.didifile=org.apache.log4j.DailyRollingFileAppender log4j.appender.didifile.file=logs/my.log log4j.appender.didifile.DatePattern= '.' yyyy-MM-dd log4j.appender.didifile.layout=org.apache.log4j.PatternLayout log4j.appender.didifile.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss,SSS} %5p %c{ 1 }:%L ---- %m%n |
可以對不同級別進行分類,比如對ERROR級別輸出到特定的日志文件中,具體配置可以如下。
1
2
3
4
5
6
7
8
|
og4j.logger.error=errorfile # error日志輸出 log4j.appender.errorfile=org.apache.log4j.DailyRollingFileAppender log4j.appender.errorfile.file=logs/error.log log4j.appender.errorfile.DatePattern= '.' yyyy-MM-dd log4j.appender.errorfile.Threshold = ERROR log4j.appender.errorfile.layout=org.apache.log4j.PatternLayout log4j.appender.errorfile.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss,SSS} %5p %c{ 1 }:%L - %m%n |
總結
以上就是這篇文章的全部內容了,希望本文的內容對大家的學習或者工作能帶來一定的幫助,如果有疑問大家可以留言交流。
原文鏈接:https://yangzhiw.github.io/2016/08/19/Boot中使用log4j記錄日志/