[英]When to use Random Access File Appenders vs. Buffered File Appenders in log4j configuration
興趣點:
可以使用bufferedIO
屬性配置FileAppenders以進行緩沖。 從beta-9開始,緩沖區大小為8 * 1024字節,不可配置。 這將在下一版本中配置。
在引擎蓋下,FileAppenders使用java.io.FileOutputStream,它可以包裝在BufferedOutputStream中。 RandomAccessFileAppenders寫入ByteBuffer,當緩沖區已滿或調用flush()
時,ByteBuffer附加到RandomAccessFile的末尾。 應該沒有太大差異(除了性能)但FileAppenders有更長的跟蹤記錄,並且可能仍然存在尚未發現的較新的RandomAccessFileAppender的問題。 翻轉似乎適用於兩種類型的appender,但可能存在團隊尚未了解的極端情況。 (Log4J2正在積極開發中,任何問題都將得到迅速解決。)
可以使用immediateFlush
屬性配置RandomAccessFileAppender和FileAppender,以將每個日志事件刷新到磁盤。 我建議您在使用AsyncAppenders或AsyncLoggers時關閉immediateFlush
,這樣您就可以利用它們提供的良好批處理行為:異步appender和logger在記錄多個事件后可以刷新,並且當隊列再次為空時也肯定會刷新一次,這非常有效並同時確保所有日志事件始終保持為磁盤。
隨機訪問直接寫入文件而不進行緩沖。 這比緩沖寫入更慢但更可靠,因為緩沖寫入可能會在發生崩潰時丟失一些未刷新的寫入。 您需要決定哪個對您更重要。 從你的三個清單中不清楚。
編輯人們會期望一個名為RandomAccessAppender
的類會使用隨機訪問,這意味着沒有緩沖,但顯然它沒有!
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.