Spring 日誌詳解 -Log4j
阿新 • • 發佈:2019-10-07
pom.xml 配置如下:
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-log4j12</artifactId>
<version>1.7.25</version>
</dependency>
主要增加了 org.slf4j:slf4j-log4j12
依賴
建立 log4j.properties 配置檔案 :
在 src/main/resources 目錄下建立名為 log4j.properties 的屬性配置檔案
log4j.rootLogger=INFO, console, file log4j.appender.console=org.apache.log4j.ConsoleAppender log4j.appender.console.layout=org.apache.log4j.PatternLayout log4j.appender.console.layout.ConversionPattern=%d %p [%c] - %m%n log4j.appender.file=org.apache.log4j.DailyRollingFileAppender log4j.appender.file.File=logs/log.log log4j.appender.file.layout=org.apache.log4j.PatternLayout log4j.appender.A3.MaxFileSize=1024KB log4j.appender.A3.MaxBackupIndex=10 log4j.appender.file.layout.ConversionPattern=%d %p [%c] - %m%n
日誌配置相關說明:
log4j.rootLogger
:根日誌,配置了日誌級別為 INFO,預定義了名稱為 console、file 兩種附加器log4j.appender.console
:console 附加器,日誌輸出位置在控制檯log4j.appender.console.layout
:console 附加器,採用匹配器佈局模式log4j.appender.console.layout.ConversionPattern
:console 附加器,日誌輸出格式為:日期 日誌級別 [類名] - 訊息換行符log4j.appender.file
:file 附加器,每天產生一個日誌檔案log4j.appender.file.File
:file 附加器,日誌檔案輸出位置 logs/log.loglog4j.appender.file.layout
:file 附加器,採用匹配器佈局模式log4j.appender.A3.MaxFileSize
:日誌檔案最大值log4j.appender.A3.MaxBackupIndex
:最多紀錄檔案數log4j.appender.file.layout.ConversionPattern
:file 附加器,日誌輸出格式為:日期 日誌級別 [類名] - 訊息換行符
測試日誌輸出
建立一個測試類,並測試日誌輸出效果,程式碼如下:
import org.slf4j.Logger; import org.slf4j.LoggerFactory; public class MyTest { public static final Logger logger = LoggerFactory.getLogger(MyTest.class); public static void main(String[] args) { logger.info("slf4j for info"); logger.debug("slf4j for debug"); logger.error("slf4j for error"); logger.warn("slf4j for warn"); String message = "Hello SLF4J"; logger.info("slf4j message is : {}", message);//{}佔位符 } }
此時控制檯顯示為:
2018-06-07 05:15:42,914 INFO [com.hjj.hello.spring.MyTest] - slf4j for info
2018-06-07 05:15:42,915 ERROR [com.hjj.hello.spring.MyTest] - slf4j for error
2018-06-07 05:15:42,915 WARN [com.hjj.hello.spring.MyTest] - slf4j for warn
2018-06-07 05:15:42,916 INFO [com.hjj.hello.spring.MyTest] - slf4j message is : Hello SLF4J
專案根目錄下也會多出 logs/log.log 目錄及檔案
附:佔位符({})說明
打日誌的時候使用了 {}
佔位符,這樣就不會有字串拼接操作,減少了無用 String
物件的數量,節省了記憶體。並且,記住,在生產最終日誌資訊的字串之前,這個方法會檢查一個特定的日誌級別是不是打開了,這不僅降低了記憶體消耗而且預先降低了 CPU 去處理字串連