1. 程式人生 > >Log4j2介紹和特性例項(一)

Log4j2介紹和特性例項(一)

Log4j是Apache的著名專案,隨著Java應用的越來越廣泛,對日誌效能等方面的要求也越來越高。Log4j的升級版本Log4j2在前些年釋出。

在log4j2釋出前,應經有了logback和SLF4J,功能也是非常強大,那麼為什麼作者還要釋出log4j2呢?在《log4j-users-guide》對這個問題做了解釋。

Its alternative, SLF4J/Logback made many needed improvements to the framework. So why bother with Log4j 2? Here are a few of the reasons.

下面是官方使用者手冊2.5版中,給出的說明。原文和自己的翻譯都放在這:

1.Log4j 2 is designed to be usable as an audit logging framework. Both Log4j 1.x and Logback will lose events while reconfiguring. Log4j 2 will not. In Logback, exceptions in Appenders are never visible to the application. In Log4j 2 Appenders can be configured to allow the exception to percolate to the application. (Log4j 2被設計成一個具有審計功能的日誌框架。在配置更新時,Log4j 1.x and Logback對日誌事件沒有反應,Log4j 2則會正常工作。另外,Logback不允許Appenders中的異常是不可見的,而Log4j2可以配置成傳送異常給應用程式。)


2. Log4j 2 contains next-generation lock-free Asynchronous Loggers based on the LMAX Disruptor library. In multi-threaded scenarios Asynchronous Loggers have 10 times higher throughput and orders of magnitude lower latency than Log4j 1.x and Logback. (主要說明Log4j2有強大的基於LMAX Disruptor library的非同步日誌功能。)

3. Log4j 2 uses a Plugin system that makes it extremely easy to extend the framework by adding new Appenders, Filters, Layouts, Lookups, and Pattern Converters without requiring any changes to Log4j. (基於外掛的軟體架構,使得Log4j2更易於擴充套件,而不需會改變Log4j2自身的功能。也就是遵循了設計模式的一個重要原則,對修改封閉,對擴充套件開放。)


4. Due to the Plugin system configuration is simpler. Entries in the configuration do not require a class name to be specified. (基於外掛的配置檔案更加簡單,配置檔案中的實體不必指定一個類名。--這一點暫時沒有搞清楚。)


5. Support for custom log levels. Custom log levels can be defined in code or in configuration. (支援使用者自定義的日誌等級,在程式碼或者配置檔案中都可以定義。)


6. Support for lambda expressions. Client code running on Java 8 can use lambda expressions to lazily construct a log message only if the requested log level is enabled. Explicit level checks are not needed, resulting in cleaner code. (支援lambda表示式。--這是Java 8的新特性,不瞭解的同學可以查一下。)


7. Support for Message objects. Messages allow support for interesting and complex constructs to be passed through the logging system and be efficiently manipulated. Users are free to create their own Message types and write custom Layouts, Filters and Lookups to manipulate them. (支援訊息物件。...。使用者可以自由的建立他們自己的訊息型別,寫使用者自定義的輸出,過濾器和Lookups來操作這些訊息型別。)


8. Log4j 1.x supports Filters on Appenders. Logback added TurboFilters to allow filtering of events before they are processed by a Logger. Log4j 2 supports Filters that can be configured to process events before they are handled by a Logger, as they are processed by a Logger or on an Appender. (比Log4j1和Logback更加全面的過濾器,Log4j2可以在Logger處理前,處理中和到Appender後都新增過濾器。)

9. Many Logback Appenders do not accept a Layout and will only send data in a fixed format. Most Log4j 2 Appenders accept a Layout, allowing the data to be transported in any format desired. (很多Logback Appenders不接收Layout引數,只用固定的格式傳送資料。大多數的Log4j2的Appenders接收Layout引數,允許以任何預期的格式傳送。)


10.Layouts in Log4j 1.x and Logback return a String. This resulted in the problems discussed at Logback Encoders. Log4j 2 takes the simpler approach that Layouts always return a byte array. This has the advantage that it means they can be used in virtually any Appender, not just the ones that write to an OutputStream. (Log4j1和Logback中的Layouts都返回String型別值。這導致了Logback Encoders中討論的一些問題。Log4j2用一個簡單的方法,Layouts返回位元組陣列。這使得Log4j2的Layouts可以用於任何Appender,而不只是使用OutputStream寫日誌的Appenders.)


11.The Syslog Appender supports both TCP and UDP as well as support for the BSD syslog and the RFC 5424 formats. (Syslog Appender即支援TCP和UDP,同時還支援BSD syslog和RFC 5424格式。)


12.Log4j 2 takes advantage of Java 5 concurrency support and performs locking at the lowest level possible. Log4j 1.x has known deadlock issues. Many of these are fixed in Logback but many Logback classes still require synchronization at a fairly high level. (Log4j2使用了Java 5對併發性的支援,而且可以在最低的等級執行枷鎖操作。Log4j1中有很多死鎖的問題。其中一些在Logback中得到了解決,但是很多Logback的類在相對高的層級,仍然需要同步保證。)


13.It is an Apache Software Foundation project following the community and support model used by all ASF projects. If you want to contribute or gain the right to commit changes just follow the path outlined at Contributing. (Log4j2是Apache的專案,所以同所有的Apache軟體基金會的支援方案相同。 按照Contributing路徑下的步驟,就可以獲得修改軟體的許可。)

終於翻譯完了,有些地方可能與原文字意有出入,歡迎大家指正:)。

後續的文章中,我會根據專案中Log4j2的使用,寫一些例子和Log4j2新特性的實驗。

相關推薦

Log4j2介紹特性例項()

Log4j是Apache的著名專案,隨著Java應用的越來越廣泛,對日誌效能等方面的要求也越來越高。Log4j的升級版本Log4j2在前些年釋出。 在log4j2釋出前,應經有了logback和SLF4J,功能也是非常強大,那麼為什麼作者還要釋出log4j2呢?在《lo

Log4j2介紹特性例項(三)--日誌的非同步輸出

上一篇介紹了一個Log4j2的使用例項,本編將介紹Log4j2的一個重要特性,日誌非同步輸出。 日誌非同步輸出的好處在於,使用單獨的程序來執行日誌列印的功能,可以提高日誌執行效率,減少日誌功能對正常業務的影響。 非同步日誌在程式的classpath需要載入disruptor

Log4j2介紹特性例項(六)--配置檔案不在預設路徑下的載入

1. Log4j2配置檔案的預設路徑是src資料夾,如果打包程式的話,配置檔案會被寫死到Jar包中,使用者不能隨時修改配置檔案。 因此,如果把配置檔案放到專案的根路徑下,則程式打包後,配置檔案可以與J

Log4j2介紹特性例項(五)--使用者自定義日誌等級

<span style="font-family: Arial, Helvetica, sans-serif; background-color: rgb(255, 255, 255);">

lidgren 介紹使用 (

有一年多沒寫東西了,一懶惰就會找藉口,今夜擦拭了堆滿灰塵的膝上型電腦,插上電源,寫了一些程式碼,時光好像又回到了以前,那個充滿夢想的自己。還能回來嗎? 好了,廢話不多說了,今天主要說說 實時通訊,因為手機遊戲 現在 越來越 需要 這類高速的通訊 來

Sqoop資料遷移工具之簡單介紹安裝(

1、概述  sqoop 是 apache 旗下一款“Hadoop 和關係資料庫伺服器之間傳送資料”的工具。   匯入資料:MySQL,Oracle 匯入資料到 Hadoop 的 HDFS、HIVE、HBASE 等資料儲存系統 匯出資料:從 Hadoop 的檔案系統中匯出資料到

JDK5的ProcessBuilder介紹使用例項

                原文地址:http://www.java2000.net/p9751JDK地址:http://www.java2000.net/doc/jdk6_cn/java/lang/ProcessBuilder.html一、JDK中的介紹摘錄此類用於建立作業系統程序。每個 Process

WebService的基本介紹呼叫例項

本文由Markdown語法編輯器編輯完成。 1. WebService的基本介紹 傳統上,我們把計算機後臺程式(Daemon)提供的功能,稱為”服務”(service)。比如,讓一個防毒軟體在後臺執行,它會自動監控系統,那麼這種自動監控就是一個”服務”。通俗

Docker 介紹安裝(

Build,Ship,and Run Any App, AnyWhere Docker 是一種核心級別的虛擬化技術。實現,一次建立和或配置,在任何地方、任何時間執行的目的。 中文社群 優勢: 更快速的交付和部署; 更高效的資源利用; 更輕鬆的遷移和擴充套件

Linux Epoll介紹程式例項

1. Epoll是何方神聖? Epoll可是當前在Linux下開發大規模併發網路程式的熱門人選,Epoll 在Linux2.6核心中正式引入,和select相似,其實都I/O多路複用技術而已,並沒有什麼神祕的。 其實在Linux下設計併發網路程式,向來不缺少方法,比如典型的

Semaphore的介紹使用例項

Semaphore可以用來控制能夠同時發給你問某個特定資源的活動的數量或者同時給定操作的數量。計數訊號量可以用來實現資源池或者一個容器限定邊界。 一個Semaphore管理一個有效許可集合。許可的初始量通過建構函式傳遞給Semaphore,活動可以獲取許可(只要還有剩餘的許

課程內容介紹Python(

課程介紹: 1.Python程式設計語言 2.深度學習——神經網路基礎 3.具有實際背景問題的提出以及解決 Python 1.面向物件程式設計,語法簡單,支援動態輸入,解釋性語言(輸入完成後就能執行)。適合於應用程式的動態開發。   1)面向物件   2)可擴充套件,可移植

cronExpression 值的介紹複製例項

一個cronExpression表示式有至少6個(也可能是7個)由空格分隔的時間元素。從左至右,這些元素的定義如下: 1.秒(0–59) 2.分鐘(0–59) 3.小時(0–23) 4.月份中的日期(1–31) 5.月份(1–12或JAN–DEC) 6.星期中的

Android中字元裝置驅動應用例項()——驅動部分

 下面介紹建立Android裝置對應的字元裝置驅動 1 字元驅動 在此示例中,我們將字元驅動新增到drivers/char目錄下。 (1)字元驅動的路徑如下: drivers/char/class_reg_unreg.c (2)字元驅動的內容如下: View C

初識LVS()——LVS介紹LVS的NAT工作模式

lvs;natLVS介紹集群按照類型劃分可以分為:LB負載均衡型;HA高可用型;HP高性能型。LVS(linux virtual machine)是一款國人編寫用於LB負載均衡型被收錄進Linux內核的工具。LVS由ipvs和ipvsadmin組成,ipvs工作在netfilter框架上,而ipvsadm則是

【Python】【元編程】【】動態屬性特性

class join write msg pen mut quest pin sys #19.1 使用動態屬性轉換數據"""#栗子19-2 osconfeed.py:下載 osconfeed.jsonfrom urllib.request import urlopenimp

)Fiddler的介紹安裝

chm 瀏覽器中 tool nec clas 技術分享 strong HR str 一、Fiddler的介紹和安裝 Fildder是一款免費的web調試代理工具,支持任何瀏覽器、系統或平臺。 官網地址:https://www.telerik.com/fiddler Fidd

腳本語句介紹練習題

語句 for 循環 一、if、case語句篇 PS:腳本現在是本人的弱項,此篇主要寫一下做過的一點腳本題,都是一些基礎難度不是很大的題,現在寫出來也算是回顧一下吧,以後有更實用更專業的腳本可能會繼續更新。    1.條件選擇if語句  選擇執行: 註意:if

【python標準庫學習】thread,threading()多線程的介紹使用

超時 targe 同步問題 線程 線程同步鎖 定義類 查看 兩個 key 在單個程序中我們經常用多線程來處理不同的工作,尤其是有的工作需要等,那麽我們會新建一個線程去等然後執行某些操作,當做完事後線程退出被回收。當一個程序運行時,就會有一個進程被系統所創建,同時也會有一個線

Docker系列:Docker的介紹安裝

實驗 start ner min docker-ce 周期 com set 自動化測試 Docker介紹 Docker是指容器化技術,用於支持創建和實驗Linux Container。借助Docker,你可以將容器當做重量輕、模塊化的虛擬機來使用,同時,你還將獲得高度的靈活