在Spring Boot中如何使用log4j記錄日志
前言
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依賴(lài)
在創(chuàng)建Spring Boot工程時(shí),我們引入了spring-boot-starter,其中包含了spring-boot-starter-logging,該依賴(lài)內(nèi)容就是
Spring Boot默認(rèn)的日志框架Logback,所以我們?cè)谝雔og4j之前,需要先排除該包的依賴(lài),再引入log4j的依賴(lài),就像下面這樣:
<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依賴(lài)之后,只需要在src/main/resources目錄下加入log4j.properties配置文件,就可以開(kāi)始對(duì)應(yīng)用的日志進(jìn)行配置使用。
控制臺(tái)輸出
通過(guò)如下配置,設(shè)定root日志的輸出級(jí)別為INFO,appender為控制臺(tái)輸出stdout
# 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文件中了。
# 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。
# 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í)別輸出到特定的日志文件中,具體配置可以如下。
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)大家可以留言交流。
相關(guān)文章
Springboot配置全局跨域未生效,訪問(wèn)接口報(bào)錯(cuò)問(wèn)題及解決
這篇文章主要介紹了Springboot配置全局跨域未生效,訪問(wèn)接口報(bào)錯(cuò)問(wèn)題及解決方案,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-12-12SpringBoot模擬員工數(shù)據(jù)庫(kù)并實(shí)現(xiàn)增刪改查操作
這篇文章主要給大家介紹了關(guān)于SpringBoot模擬員工數(shù)據(jù)庫(kù)并實(shí)現(xiàn)增刪改查操作的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2021-09-09Spring Security 實(shí)現(xiàn)用戶(hù)名密碼登錄流程源碼詳解
在服務(wù)端的安全管理使用了Spring Security,用戶(hù)登錄成功之后,Spring Security幫你把用戶(hù)信息保存在Session里,但是具體保存在哪里,要是不深究你可能就不知道,今天小編就帶大家具體了解一下Spring Security實(shí)現(xiàn)用戶(hù)名密碼登錄的流程2021-11-11SpringBoot Maven升級(jí)自帶的jar包版本問(wèn)題
這篇文章主要介紹了SpringBoot Maven升級(jí)自帶的jar包版本問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-07-07分析Java中ArrayList與LinkedList列表結(jié)構(gòu)的源碼
這篇文章主要介紹了Java中ArrayList與LinkedList列表結(jié)構(gòu)的源碼,文章最后對(duì)LinkedList和ArrayList以及Vector的特性有一個(gè)對(duì)比總結(jié),需要的朋友可以參考下2016-05-05Windows下Java調(diào)用OCR進(jìn)行圖片識(shí)別
這篇文章主要為大家詳細(xì)介紹了Windows下Java調(diào)用OCR進(jìn)行圖片識(shí)別,通過(guò)Tesseract-OCR對(duì)圖片進(jìn)行識(shí)別,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2018-12-12java中DateUtils時(shí)間工具類(lèi)詳解
這篇文章主要為大家詳細(xì)介紹了java中DateUtils時(shí)間工具類(lèi),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2017-12-12Druid基本配置及內(nèi)置監(jiān)控使用_動(dòng)力節(jié)點(diǎn)Java學(xué)院整理
這篇文章主要介紹了Druid基本配置及內(nèi)置監(jiān)控使用,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2017-08-08