前言
Spring Boot在所有內(nèi)部日志中使用Commons Logging,但是默認(rèn)配置也提供了對(duì)常用日志的支持,如:Java Util Logging,Log4J, Log4J2和Logback。每種Logger都可以通過(guò)配置使用控制臺(tái)或者文件輸出日志內(nèi)容。本文主要介紹了在Spring Boot中如何使用log4j記錄日志,感興趣的來(lái)一起學(xué)習(xí)學(xué)習(xí)。
引入log4j依賴
在創(chuàng)建Spring Boot工程時(shí),我們引入了spring-boot-starter,其中包含了spring-boot-starter-logging,該依賴內(nèi)容就是
Spring Boot默認(rèn)的日志框架Logback,所以我們?cè)谝雔og4j之前,需要先排除該包的依賴,再引入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配置文件,就可以開(kāi)始對(duì)應(yīng)用的日志進(jìn)行配置使用。
控制臺(tái)輸出
通過(guò)如下配置,設(shè)定root日志的輸出級(jí)別為INFO,appender為控制臺(tái)輸出stdout
1
2
3
4
5
6
|
# LOG4J配置 log4j.rootCategory=INFO, stdout # 控制臺(tái)輸出 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 |
輸出到文件
在開(kāi)發(fā)環(huán)境,我們只是輸出到控制臺(tái)沒(méi)有問(wèn)題,但是到了生產(chǎn)或測(cè)試環(huán)境,或許持久化日志內(nèi)容,方便追溯問(wèn)題原因。
可以通過(guò)添加如下的appender內(nèi)容,按天輸出到不同的文件中去,同時(shí)還需要為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 |
分類(lèi)輸出
1.可以按不同package進(jìn)行輸出。通過(guò)定義輸出到logs/my.log的appender,并對(duì)com.didispace包下的日志級(jí)別設(shè)定
為DEBUG級(jí)別、appender設(shè)置為輸出到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 |
可以對(duì)不同級(jí)別進(jìn)行分類(lèi),比如對(duì)ERROR級(jí)別輸出到特定的日志文件中,具體配置可以如下。
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 |
總結(jié)
以上就是這篇文章的全部?jī)?nèi)容了,希望本文的內(nèi)容對(duì)大家的學(xué)習(xí)或者工作能帶來(lái)一定的幫助,如果有疑問(wèn)大家可以留言交流。
原文鏈接:https://yangzhiw.github.io/2016/08/19/Boot中使用log4j記錄日志/