Log日志:主要用于記錄程序運行的情況,以便于程序在部署之后的排錯調試等等!也有利于將這些信息進行持久化(如果不將日志信息保存到文件或數據庫,則信息便會丟失)

Java Logging API

需JDK1.4版本以上才能支持。

java.util.logging.* 包是JDK的日志記錄API。

基本概念

logger  用來記錄日志的對象

log level  日志等級:從FINEST到SEVERE級別

請參考JDK文檔

handler  日志輸出處理器,即用來將格式化后的日志信息輸出,J2SE提供了下面的處理器

StreamHandler  將信息輸出到一個OutputStream對象

ConsoleHandler  將信息輸出到控制臺

FileHandler  將信息輸出到文件

還有Socket處理器和內存處理器等

Formater  用來對日志信息進行格式化

SimpleFormater  簡單的格式化輸出

XmlFormater  Xml格式化輸出

logManager  日志管理器,它包含有那些被命名的logger,以及從配置文件中讀取來的一些控制信息

Log4j

基本概念

Log4j比JDK Logging更加成熟。Log4j是事實上 日志記錄標準。

三大概念:logger/appender/layout

logger  使用這個對象來進行輸出

appender  使用這個對象來定義輸出到哪里去

layout  使用這個對象來定義輸出的格式

log4j的級別(level)

DEBUG < INFO < WARN < ERROR < FATAL

基本配置與使用

只需要將log4j.jar包放到類路徑中,并且保證在類路徑根目錄下有一個log4j.properties文件即可。Log4j.properties文件是對log4j的配置。 

在log4j.properties中,可以配置logger/appender/layout/level等內容。

了解如何配置logger

log4j.rootLogger = [級別],[使用哪個appender]

log4j.logger.[logger的名稱]=[級別],[使用哪個appender]

了解如何配置appender

Log4j.appender.[appender的名稱]=[appender類名]

Log4j.appender.[appender的名稱].[appender的屬性名]=[appender的屬性值]

如:對于ConsoleAppender來說,可以配置它的target屬性為System.out,而對于FileAppender來說,可以配置它的File屬性為一個文件名

了解如何配置layout

Log4j.appender.[appender的名稱].layout=[layout類名]

Log4j.appender.[appender的名稱].layout.[layout的屬性名]=[layout的屬性值]

最常見的是PatternLayout

Log4J采用類似C語言中的printf函數的打印格式格式化日志信息,打印參數見表1如下:
%m 輸出代碼中指定的消息
%p 輸出優先級,即DEBUG,INFO,WARN,ERROR,FATAL
%r 輸出自應用啟動到輸出該log信息耗費的毫秒數
%c 輸出所屬的類目,通常就是所在類的全名
%t 輸出產生該日志事件的線程名
%n 輸出一個回車換行符,Windows平臺為“"r"n”,Unix平臺為“"n”
%d 輸出日志時間點的日期或時間,默認格式為ISO8601,也可以在其后指定格式,比如:%d{yyy MMM dd HH:mm:ss,SSS},輸出類似:2002年10月18日 22:10:28,921
%l 輸出日志事件的發生位置,包括類目名、發生的線程,以及在代碼中的行數。舉例:Testlog4.main(TestLog4.java:10)

Commons log

通用Log處理,它是一個接口抽象,底層的實現可以自動替換:

如果當前存在log4j,則使用log4j來實現

否則,使用JDK LOG來實現

否則,使用其自身的簡單實現