柚子快報邀請碼778899分享:Java日志系統(tǒng)之Log4j
柚子快報邀請碼778899分享:Java日志系統(tǒng)之Log4j
目錄
Log4J
Log4j的簡單使用
日志級別
Log4j的組件
Loggers
Appenders
Layout
Layout格式
設置配置文件加載
配置文件解析
Log4J
是Apache下開源的日志框架
Log4j的簡單使用
@Test
public void testLog4J(){
Logger logger = Logger.getLogger(Log4jTest.class);
logger.info("hello log4j");
}
log4j:WARN No appenders could be found for logger (com.zmt.Log4jTest).
log4j:WARN Please initialize the log4j system properly.
log4j:WARN See Apache log4j 1.2 - Frequently Asked Technical Questions for more info.
它并沒有我們想象的一樣,直接輸出日志,而是輸出警告信息。意思為需要一個初始化配置信息。
添加一個BasicConfigurator.configure()即可。
日志級別
fatal:嚴重錯誤,一般會造成系統(tǒng)崩潰并停止運行error:錯誤信息,不會影響系統(tǒng)運行warn:警告信息,可能會發(fā)生問題info:運行信息,數(shù)據(jù)庫連接,網(wǎng)絡連接,IO等信息debug:信息調(diào)試,一般在開發(fā)中使用(默認級別)trace:追蹤信息,記錄程序所有的流程信息
Log4j的組件
Log4j由Loggers(日志記錄器)、Appenders (輸出端)和 Layout (日志格式化器)組成。其中 Loggers控制日志的輸出級別與日志是否輸出;Appenders 指定日志的輸出方式(輸出到控制臺、文件等); Layout 控制日志信息的輸出格式。
Loggers
與JUL(Java日志系統(tǒng)之JUL-CSDN博客)的Logger一樣具有父子關系,有一個默認的根Logger對象,父子關系也通過全路徑來判斷。由如果沒有設置配置,則采用根Logger的默認配置。
Appenders
指定日志輸出位置
ConsoleAppender:將日志輸出到控制臺FileAppender:將日志輸出到文件中DailyRollingFileAppender:將日志輸出到一個日志文件,并且每天輸出到一個新的文件RollingFileAppenger:將日志信息輸出到一個日志文件,并且指定文件的尺寸,當文件大小達到指尺寸時,會自動把文件改名,同時產(chǎn)生一個新的文件DBCAppender:把日志信息保存到數(shù)據(jù)庫中
Layout
HTMLLayout:格式化日志輸出為HTML表格形式SimpleLayout:簡單的日志輸出格式化,打印的日志格式為 (info-message)PatternLayout:最強大的格式化期,可以根據(jù)自定義格式輸出日志,如果沒有指定轉換格式,就是用默認的轉換格式
?Layout格式
只有在Appender為PatternLayout時有效
%m 輸出代碼中指定的日志信息%p 輸出優(yōu)先級,及DEBUG、INFO等%n 換行符%r 輸出自應用啟動到輸出該 log 信息耗費的毫秒數(shù)%c 輸出打印語句所屬的類的全名%t 輸出產(chǎn)生該日志的線程全名%d 輸出服務器當前時間,默認為 IS08601,也可以指定格式,如:%d{yyyy-MM-dd HH:mm:ss]%l 輸出日志時間發(fā)生的位置,包括類名、線程、及在代碼中的行數(shù)。如: Test.main{Test.java:10}%F 輸出日志消息產(chǎn)生時所在的文件名稱%L 輸出代碼中的行號%% 輸出一個"%"字符
測試如下格式的日志輸出
log4j.appender.console.layout.conversionPattern = Thread:%t [%5p] %d{yyyy-MM-dd HH:mm:ss}: %m%n
設置配置文件加載
log4j支持一下幾種配置文件格式
LomManager加載配置文件的路徑是通過類加載器加載。
加載方法為下圖
進行文件配置
配置文件解析
log4j.rootLogger=debug,console,file
log4j.appender.console =org.apache.log4j.ConsoleAppender
#指定消息格式類型
log4j.appender.console.layout =org.apache.log4j.PatternLayout
#指定轉化格式內(nèi)容
log4j.appender.console.layout.conversionPattern = Thread:%t [%5p] %d{yyyy-MM-dd HH:mm:ss}: %m%n
log4j.appender.file =org.apache.log4j.FileAppender
log4j.appender.file.layout =org.apache.log4j.PatternLayout
log4j.appender.file.layout.conversionPattern = Thread:%t [%5p] %d{yyyy-MM-dd HH:mm:ss}: %m%n
#指定文件路徑
log4j.appender.file.file=/logs/log4j.log
#指定文件編碼格式
log4j.appender.file.encoding=UTF-8
log4j.appender.rollingFile =org.apache.log4j.RollingFileAppender
log4j.appender.rollingFile.layout =org.apache.log4j.PatternLayout
log4j.appender.rollingFile.layout.conversionPattern = Thread:%t [%5p] %d{yyyy-MM-dd HH:mm:ss}: %m%n
#指定文件路徑
log4j.appender.rollingFile.file=/logs/log4j.log
#指定文件編碼格式
log4j.appender.rollingFile.encoding=UTF-8
#文件到達1MB便進行拆分
log4j.appender.rollingFile.maxFileSize=1MB
#指定拆分數(shù)量,如果拆分不夠的話,會按照時間久遠進行覆蓋
log4j.appender.rollingFile.maxBackupIndex= 10
log4j.appender.dailyFile =org.apache.log4j.DailyRollingFileAppender
log4j.appender.dailyFile.layout =org.apache.log4j.PatternLayout
log4j.appender.dailyFile.layout.conversionPattern = Thread:%t [%5p] %d{yyyy-MM-dd HH:mm:ss}: %m%n
#指定文件路徑
log4j.appender.dailyFile.file=/logs/log4j.log
#指定文件編碼格式
log4j.appender.dailyFile.encoding=UTF-8
#指定時間拆分規(guī)則 默認以天為單位
log4j.appender.dailyFile.datePattern='.'yyyy-MM-dd
柚子快報邀請碼778899分享:Java日志系統(tǒng)之Log4j
精彩內(nèi)容
本文內(nèi)容根據(jù)網(wǎng)絡資料整理,出于傳遞更多信息之目的,不代表金鑰匙跨境贊同其觀點和立場。
轉載請注明,如有侵權,聯(lián)系刪除。