Log4j2的Appenders配置詳解

轉載:https://blog.csdn.net/ThinkWon/article/details/101625820

Appenders是輸出源,用於定義日誌輸出的地方。
log4j2支持的輸出源有很多,有控制檯ConsoleAppender、文件FileAppender、AsyncAppender、RandomAccessFileAppender、RollingFileAppender、RollingRandomAccessFile 等

ConsoleAppender
控制檯輸出源是將日誌打印到控制檯上,開發的時候一般都會配置,以便調試。

name:指定Appender的名字。
target:SYSTEM_OUT 或 SYSTEM_ERR,一般只設置默認:SYSTEM_OUT。
PatternLayout:輸出格式,不設置默認爲:%m%n。
AsyncAppender
異步輸出。AsyncAppender接受對其他Appender的引用,並使LogEvents在單獨的Thread上寫入它們。

默認情況下,AsyncAppender使用 java.util.concurrent.ArrayBlockingQueue ,它不需要任何外部庫。請注意,多線程應用程序在使用此appender時應小心:阻塞隊列容易受到鎖爭用的影響,並且我們的 測試 表明,當更多線程同時記錄時性能可能會變差。考慮使用無鎖異步記錄器以獲得最佳性能。

FileAppender
文件輸出源,用於將日誌寫入到指定的文件,其底層是一個OutputStreamAppender,需要配置輸入到哪個位置(例如:D:/logs/mylog.log)

name:指定Appender的名字。
fileName:指定輸出日誌的目的文件帶全路徑的文件名。
PatternLayout:輸出格式,不設置默認爲:%m%n。
RollingFileAppender
RollingFileAppender是一個OutputStreamAppender,它寫入fileName參數中指定的File,並根據TriggeringPolicy和RolloverPolicy滾動文件。

RandomAccessFileAppender
RandomAccessFileAppender類似於標準的 FileAppender, 除了它總是被緩衝(這不能被關閉),並且在內部它使用 ByteBuffer + RandomAccessFile 而不是 BufferedOutputStream。與FileAppender相比,我們在測量中看到“bufferedIO = true”,性能提升了20-200% 。

RollingRandomAccessFileAppender
RollingRandomAccessFileAppender類似於標準的 RollingFileAppender, 除了它總是被緩衝(這不能被關閉),並且在內部它使用ByteBuffer + RandomAccessFile 而不是BufferedOutputStream。與RollingFileAppender相比,我們在測量中看到“bufferedIO = true”,性能提升了20-200%。RollingRandomAccessFileAppender寫入fileName參數中指定的文件,並根據TriggeringPolicy和RolloverPolicy滾動文件。

RollingRandomAccessFile: 該輸出源也是寫入到文件,不同的是比File更加強大,可以指定當文件達到一定大小(如20MB)時,另起一個文件繼續寫入日誌,另起一個文件就涉及到新文件的名字命名規則,因此需要配置文件命名規則。這種方式更加實用,因爲你不可能一直往一個文件中寫,如果一直寫,文件過大,打開就會卡死,也不便於查找日誌。

name:指定Appender的名字。
fileName 指定當前日誌文件的位置和文件名稱
filePattern 指定當發生Rolling時,文件的轉移和重命名規則
immediateFlush 設置爲true時 - 默認值,每次寫入後都會進行刷新。這將保證數據寫入磁盤,但可能會影響性能。
bufferSize 緩衝區大小,默認爲262,144字節(256 * 1024)。
Policies:指定滾動日誌的策略,就是什麼時候進行新建日誌文件輸出日誌。
SizeBasedTriggeringPolicy 指定當文件大小大於size指定的值時,觸發Rolling
TimeBasedTriggeringPolicy 這個配置需要和filePattern結合使用,日期格式精確到哪一位,interval也精確到哪一個單位。注意filePattern中配置的文件重命名規則是${FILE_NAME}-%d{yyyy-MM-dd HH-mm-ss}-%i,最小的時間粒度是ss,即秒鐘。TimeBasedTriggeringPolicy默認的size是1,結合起來就是每1秒鐘生成一個新文件。如果改成%d{yyyy-MM-dd HH},最小粒度爲小時,則每一個小時生成一個文件
DefaultRolloverStrategy 指定最多保存的文件個數
 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章