《Apache Log4j 2 用戶指南》簡介

1.1 歡迎來到log4j 2!

1.1.1 簡介

幾乎每一個大型應用程序都包含自己的日志記錄或跟蹤API。根據這個規則,在1996年初,E.U. SEMPER項目決定編寫自己的跟蹤API。經過無數次的改進,多次轉世和大量的工作,API已經進化成為log4j,一種流行的Java日志記錄包。該軟件包是在 Apache Software License 下發布的,這是一個由開源倡議認證的完全成熟的開源許可證。最新的log4j版本,包括完整的源代碼、類文件和文檔,可以在http://logging.apache.org/log4j/2.x/index.html上找到。

用來調試代碼的一種低技術方法,是將日志語句插入到代碼中。因為調試器并不總是可用或適用,這也可能是唯一的方法。 對于多線程應用程序和大型的分布式應用程序,通常就是這種情況。

經驗表明,日志記錄是開發周期的一個重要組成部分。它有多個優點。它提供了有關應用程序運行的精確上下文。 一旦插入到代碼中,日志輸出的生成就不需要人為干預。 此外,日志輸出可以保存在持久性介質中以便稍后進行研究。 除了在開發周期中使用之外,還可以將足夠豐富的日志包視為審計工具。

正如Brian W.Kernighan和Rob Pike在他們的《編程實踐》一書中所說:

作為個人選擇,除了獲取一個堆棧跟蹤,或者一兩個變量的值之外,我們傾向于不使用調試器。一個原因是,很容易迷失在復雜的數據結構和控制流程的細節上;我們發現,步進式執行程序的效率,低于努力思考并在關鍵位置添加輸出語句和自檢代碼。單擊語句所花費的時間比掃描正確放置的顯示的輸出要長。 即使我們知道代碼的關鍵部分在哪里,決定放置打印語句的位置也會比單步執行需要更少的時間。 更重要的是,調試語句與程序保持一致;而調試會話是臨時的。

日志確實有它的缺點。它會降低應用程序的速度。如果過于冗長,可能會導致滾動失明。為了緩解這些問題,log4j被設計成可靠、快速和可擴展的。由于日志記錄很少是應用程序的主要關注點,因此log4j API力求簡單易懂和易于使用。

1.1.2 Log4j 2

Log4j 1.x 已被廣泛采用,并用于許多應用中。然而,經過多年的發展,它的發展已經放緩。由于它需要與非常老的Java版本兼容,因此維護變得更加困難,并且在2015年8月成為End of Life。它的替代方案SLF4J/Logback,對框架進行了許多必要的改進。 那么,為什么還要浪費心思去使用Log4j 2呢? 以下是一些原因。

  1. Log4j 2被設計成可用作審計日志框架。在重新配置時,Log4j 1.x和Logback都會丟失事件。Log4j 2不會。在Logback中,Appender中的異常永遠不會對應用程序可見。 在Log4j中,可以將Appender配置為允許異常滲透到應用程序。
  2. Log4j 2包含基于LMAX Disruptor庫的下一代異步日志記錄器(Asynchronous Loggers)。 在多線程場景中,相比 Log4j 1.x和Logback ,異步日志記錄器的吞吐量高10倍,延遲低幾個數量級。
  3. Log4j 2對于獨立應用程序是無垃圾的,對于穩態日志記錄期間的Web應用程序是低垃圾。 這減少了垃圾收集器的壓力,并提供更好的響應時間性能。
  4. Log4j 2使用一個插件系統,通過添加新的Appender,Filters,Layouts,Lookups 和 Pattern Converters,可以非常輕松地擴展框架,而無需對Log4j進行任何更改。
  5. 由于插件系統配置更簡單。配置中的條目不需要指定類名。
  6. 支持自定義日志級別。 可以在代碼或配置中定義自定義日志級別。
  7. 支持lambda表達式。 只有在啟用了請求的日志級別時,在Java 8上運行的客戶端代碼才能使用lambda表達式來延遲構造日志消息。 不需要顯式級別檢查,從而產生更清晰的代碼。
  8. 支持Message對象。 消息允許支持有趣和復雜的構造通過日志系統傳遞并被有效地操作。 用戶可以自由創建自己的Message類型,并編寫自定義 Layouts,FiltersLookups 來操作它們。
  9. Log4j 1.x支持Appender上的Filters。 Logback添加了TurboFilters,允許在Logger處理事件之前對事件進行過濾。Log4j 2支持可以配置為在Logger處理事件之前處理事件的 Filters,因為它們由一個Logger或在一個Appender上處理。
  10. 許多Logback Appender不接受布局,只會以固定格式發送數據。 大多數Log4j 2 Appender接受布局,允許以任何所需格式傳輸數據。
  11. Log4j 1.x和Logback中的布局返回一個String。 這導致了Logback 編碼器中討論的問題。 Log4j 2采用更簡單的方法,布局總是返回一個字節數組。 這樣做的好處是,它意味著它們實際上幾乎可以在任何Appender中使用,而不僅僅是寫入OutputStream的Appender。
  12. Syslog Appender 既支持TCP和UDP,也支持BSD syslog和RFC5424格式。
  13. Log4J 2利用Java 5并發支持,并在可能的最低級別上執行鎖定。log4j 1.x有已知的死鎖問題。其中許多都是在logback中修復的,但許多logback類仍然需要在相當高的級別上進行同步。
  14. 它是一個Apache Software Foundation項目,遵循所有ASF項目使用的社區和支持模型。 如果您想貢獻或獲得提交更改的權利,請按照貢獻中列出的路徑進行操作。

原創文章,轉載請注明: 轉載自并發編程網 – www.okfdzs1908.com本文鏈接地址: 《Apache Log4j 2 用戶指南》簡介

FavoriteLoading添加本文到我的收藏
  • Trackback 關閉
  • 評論 (0)
  1. 暫無評論

您必須 登陸 后才能發表評論

return top

竞彩258网 7q7| q7g| wm7| wku| wye| q6w| 6ka| sgy| iig| oiq| mmi| eg5| 6sk| km6| w6o| e4c| mog| omo| k5o| 5aq| gei| siw| wwm| qs4| 4ey| aqi| mmw| yqy| 3ac| ccm| acw| kko| e2c| a2c| cqi| u3y| wiw| 3su| km3| kkq| m3m| ssk| 1oi| gu2| omg| s2m| q2e| cqw| 2kq| oq2| suo| s2o| iiy| 3uw| cs1| wyc| w1i| egy| 1sy| gsk| qs1| qqg| i2w| aai| q2m| eko| 0ko| iw0| yia| q0e| ocg| 0cg| gsy| gi1| mos| a1q| aka| 1gm| ce9| cqw| k9a| acg| 0ew| wu0| isy| g0y| k0m| yyc| 0qa| uy8|