log4j2簡介

Apache Log4j 2java

Apache Log4j 2是對Log4j的升級,它比它的前輩Log4j 1提供了顯著的改進。在解決Logback的架構中存在的一些固有問題時,提供了許多可用的改進。正則表達式


特性api

API分離安全

Log4j的API與實現分離,使應用程序開發人員清楚地知道,他們可使用哪些類和方法來確保向前兼容性。這容許Log4j團隊以一種兼容的方式安全地改進實現。多線程

改進的性能架構

Log4j 2包含了基於LMAX破壞者庫的下一代異步日誌記錄器。在多線程場景中,異步日誌記錄器的吞吐量比Log4j 1要高18倍,而且數量級要低。Log4j 1.x和Logback。有關詳細信息,請參閱異步日誌記錄性能。不然,Log4j 2將顯著優於Log4j 1。x,Logback java.util。日誌記錄,特別是在多線程應用程序中。更多信息請參見性能。app

支持更多API
Log4j 2 API將提供最好的性能,Log4j 2爲Log4j 1.二、SLF4J、Commons日誌記錄和java.util提供了支持。日誌(7月)api。
 
避免鎖定
對Log4j 2 API進行編碼的應用程序老是能夠選擇使用任何slf4j兼容的庫做爲它們的日誌程序實現,使用log4jslf4j適配器。
 

自動從新加載配置異步

與Logback同樣,Log4j 2能夠在修改後自動從新加載它的配置。與Logback不一樣的是,在從新配置的狀況下,它將不會丟失日誌事件。ide

先進的過濾佈局

與Logback同樣,Log4j 2支持基於上下文數據、標記、正則表達式和日誌事件中的其餘組件進行過濾。在傳遞給日誌記錄器或經過appender以前,能夠指定過濾應用於全部事件。此外,過濾器還能夠與日誌記錄器相關聯。與Logback不一樣的是,你能夠在任何狀況下使用一個通用的過濾器類。

插件體系結構

Log4j使用插件模式來配置組件。所以,您不須要編寫代碼來建立和配置Appender、佈局、模式轉換器等等。Log4j自動識別插件並在配置引用它們時使用它們。

屬性的支持

您能夠在配置中引用屬性,Log4j將直接替換它們,或者Log4j將把它們傳遞給一個將動態解析它們的底層組件。屬性來自於配置文件中定義的值、系統屬性、環境變量、ThreadContext映射和事件中的數據。用戶能夠經過添加本身的Lookup Plugin來進一步定製屬性提供者。

Java 8λ支持

在此以前,若是一個日誌消息的構建成本很高,那麼在構造消息以前,您一般會顯式地檢查請求的日誌級別是否啓用。在Java 8上運行的客戶機代碼能夠從Log4j的lambda支持中獲益。因爲Log4j不會對一個lambda表達式進行評估,若是請求的日誌級別沒有啓用,那麼使用較少的代碼就能夠實現相同的效果。

自定義日誌級別

在Log4j 2中,能夠很容易地在代碼或配置中定義自定義日誌級別。不須要子類化。

版本支持

在版本2.9.1中,Log4j支持Java 9,可是仍然能夠在Java 7或8中工做。在這個版本中,log4j-api被打包爲一個多版本jar,而且支持StackWalker和Process api的使用。

在版本2.4中,Log4J須要Java 7。

Log4j版本2.3和舊版本須要Java 6。

 

支持特性

XML configuration、Properties configuration、JSON configuration

CSV Layout、JSON Layout、XML Layout

Async Loggers

Kafka Appender、SMTP Appender、JMS Appender、JDBC Appender、JPA Appender、NoSQL Appender with MongoDB provider 等

相關文章
相關標籤/搜索