Log4j 是一個(gè)使用 Java 語(yǔ)言編寫(xiě)的,可靠、快速、靈活的日志框架(API),使用 Apache Software License 授權(quán)。
它被移植到 C、C++、C#、Perl、Python、Ruby 和 Eiffel 語(yǔ)言中。
Log4j 是高度可配置的,在運(yùn)行期使用外部的配置文件對(duì)其進(jìn)行配置。它按照優(yōu)先級(jí)別記錄日志,并可將日志信息定向輸出到各種介質(zhì),比如數(shù)據(jù)庫(kù)、文件、控制臺(tái)、Unix Syslog等。
Log4j 主要由三部分組成:
- loggers:負(fù)責(zé)采集日志信息。
- appenders:負(fù)責(zé)將日志信息發(fā)布到不同地方。
- layouts:負(fù)責(zé)以各種風(fēng)格格式化日志信息。
Log4j 的歷史
- 始于 1996 年,作為記錄E.U. SEMPER (Secure Electronic Marketplace for Europe)項(xiàng)目跟蹤信息的 API。
- 經(jīng)過(guò)大量的完善和蛻變,最初的 API 終于演進(jìn)為 Log4j,一個(gè)在 Java 社區(qū)流行的日志類(lèi)庫(kù)。
- 該類(lèi)庫(kù)使用 Apache Software License 授權(quán),該授權(quán)是經(jīng)開(kāi)源促進(jìn)協(xié)會(huì)認(rèn)證的、完整的開(kāi)源協(xié)議。
- 最新版本的 Log4j,連同其代碼、類(lèi)文件和文檔可通過(guò) http://logging.apache.org/log4j/ 獲取。
Log4j 的功能
- 線(xiàn)程安全。
- 速度優(yōu)化。
- 基于命名的 logger 層次。
- 每個(gè) logger 支持多種輸出 appender。
- 支持國(guó)際化。
- 不受限于預(yù)定義好的設(shè)施。
- 日志記錄行為可在運(yùn)行期通過(guò)配置文件設(shè)置。
- 設(shè)計(jì)之初就考慮了處理 Java 異常。
- 使用多個(gè)日志級(jí)別:ALL、TRACE、DEBUG、INFO、WARN、ERROR、FATAL。
- 通過(guò)擴(kuò)展
Layout
類(lèi)可輕松改變輸出日志的格式。
- 輸出日志的目的和策略可通過(guò)實(shí)現(xiàn)
Appender
接口改變。
- 失敗即停止。雖然 Log4j 努力做到最好,但不保證每一條日志都能發(fā)送到指定目的地。
記錄日志的優(yōu)缺點(diǎn)
記錄日志是軟件開(kāi)發(fā)中的重要一環(huán)。編寫(xiě)良好的日志代碼能為運(yùn)行應(yīng)用提供快速的診斷信息和良好的存儲(chǔ)結(jié)構(gòu),方便維護(hù)。
記錄日志也有其缺點(diǎn),它會(huì)讓?xiě)?yīng)用變慢。假如輸出太詳細(xì),可能會(huì)導(dǎo)致屏幕閃動(dòng)。為了減輕這些影響,Log4j 被設(shè)計(jì)為可靠的,更快的和可擴(kuò)展的。
由于日志很少是應(yīng)用程序關(guān)注的焦點(diǎn),所以 Log4j API 力爭(zhēng)做到簡(jiǎn)單并易于理解和使用。