1. 程式人生 > >Java Log4J 使用教程(java日誌)

Java Log4J 使用教程(java日誌)

1. 簡介
2. 安裝
3. log4j基本概念
3.1. Logger
3.2. Appender
3.2.1. 使用ConsoleAppender
3.2.2. 使用FileAppender
3.2.3. 使用WriterAppender
3.3. Layout
3.4. 基本示例
3.4.1. SimpleLayout和FileAppender
3.4.2. HTMLLayout和WriterAppender
3.4.3. PatternLayout和ConsoleAppender
4. 使用外部配置檔案
5. 參考資料 (以及一些有參考價值的連結)
1.簡介
程式開發環境中的日誌記錄是由嵌入在程式中以輸出一些對開發人員有用資訊的語句所組成。例如,跟蹤語句(trace),結構轉儲和常見的System.out.println或printf除錯語句。log4j提供分級方法在程式中嵌入日誌記錄語句。日誌資訊具有多種輸出格式和多個輸出級別。


使用一個專門的日誌記錄包,可以減輕對成千上萬的System.out.println語句的維護成本,因為日誌記錄可以通過配置指令碼在執行時得以控制。log4j維護嵌入在程式程式碼中的日誌記錄語句。通過規範日誌記錄的處理過程,一些人認為應該鼓勵更多的使用日誌記錄並且獲得更高程度的效率。

2.安裝
為了使用我們即將要安裝的日誌記錄工具,還必須要設定操作環境,只有這樣,工具才能知道從哪裡找到它所需要的資訊,並且作業系統知道從哪裡找到這個工具。那麼,怎樣做呢?實際上,它要求更改操作環境。我有一些這方面的資格文件。 Configuring A Windows Working Environment 和 Configuring A Unix Working Environment.


從 http://jakarta.apache.org/log4j/docs/download.html下載log4j發行版。

解壓存檔檔案到合適的目錄中。

新增檔案 dist/lib/log4j-1.2.6.jar 到 CLASSPATH 環境變數中。

3.log4j的基本概念
使用log4j大概涉及3個主要概念:

公共類 Logger

Logger 負責處理日誌記錄的大部分操作。

公共介面 Appender

Appender 負責控制日誌記錄操作的輸出。

公共抽象類Layout

Layout 負責格式化Appender的輸出。

3.1.Logger
日誌記錄器(Logger)是日誌處理的核心元件。log4j具有5種正常級別(Level)。日誌記錄器(Logger)的可用級別Level (不包括自定義級別 Level), 以下內容就是摘自log4j API
(http://jakarta.apache.org/log4j/docs/api/index.html):

static Level DEBUG

DEBUG Level指出細粒度資訊事件對除錯應用程式是非常有幫助的。

static Level INFO

INFO level表明 訊息在粗粒度級別上突出強調應用程式的執行過程。

static Level WARN

WARN level表明會出現潛在錯誤的情形。

static Level ERROR

ERROR level指出雖然發生錯誤事件,但仍然不影響系統的繼續執行。

static Level FATAL

FATAL level指出每個嚴重的錯誤事件將會導致應用程式的退出。

另外,還有兩個可用的特別的日誌記錄級別: (以下描述來自log4j APIhttp://jakarta.apache.org/log4j/docs/api/index.html):

static Level ALL

ALL Level是最低等級的,用於開啟所有日誌記錄。

static Level OFF

OFF Level是最高等級的,用於關閉所有日誌記錄。

日誌記錄器(Logger)的行為是分等級的。如下表所示:

圖.日誌輸出等級


日誌記錄器(Logger)將只輸出那些級別高於或等於它的級別的資訊。如果沒有設定日誌記錄器(Logger)的級別,那麼它將會繼承最近的祖先的級別。因此,如果在包com.foo.bar中建立一個日誌記錄器(Logger)並且沒有設定級別,那它將會繼承在包com.foo中建立的日誌記錄器(Logger)的級別。如果在com.foo中沒有建立日誌記錄器(Logger)的話,那麼在com.foo.bar中建立的日誌記錄器(Logger)將繼承root 日誌記錄器(Logger)的級別,root日誌記錄器(Logger)經常被例項化而可用,它的級別為DEBUG。

有很多方法可以建立一個日誌記錄器(Logger),下面方法可以取回root日誌記錄器:

Logger logger = Logger.getRootLogger();


還可以這樣建立一個新的日誌記錄器:

Logger logger = Logger.getLogger("MyLogger");


比較常用的用法,就是根據類名例項化一個靜態的全域性日誌記錄器:

static Logger logger = Logger.getLogger(test.class);


所有這些建立的叫"logger"的日誌記錄器都可以用下面方法設定級別:

logger.setLevel((Level)Level.WARN);


可以使用7個級別中的任何一個; Level.DEBUG, Level.INFO, Level.WARN, Level.ERROR, Level.FATAL, Level.ALL and Level.OFF.

3.2.Appender
Appender 控制日誌怎樣輸出。下面列出一些可用的Appender(log4j API中所描述的http://jakarta.apache.org/log4j/docs/api/index.html):

ConsoleAppender:使用使用者指定的佈局(layout) 輸出日誌事件到System.out或者 System.err。預設的目標是System.out。

DailyRollingFileAppender 擴充套件FileAppender,因此多個日誌檔案可以以一個使用者選定的頻率進行迴圈日誌記錄。

FileAppender 把日誌事件寫入一個檔案

RollingFileAppender 擴充套件FileAppender備份容量達到一定大小的日誌檔案。

WriterAppender根據使用者的選擇把日誌事件寫入到Writer或者OutputStream。

SMTPAppender 當特定的日誌事件發生時,一般是指發生錯誤或者重大錯誤時,傳送一封郵件。

SocketAppender 給遠端日誌伺服器(通常是網路套接位元組點)傳送日誌事件(LoggingEvent)物件。

SocketHubAppender 給遠端日誌伺服器群組(通常是網路套接位元組點)傳送日誌事件(LoggingEvent)物件。

SyslogAppender給遠端非同步日誌記錄的後臺精靈程式(daemon)傳送訊息。

TelnetAppender 一個專用於向只讀網路套接字傳送訊息的log4j appender。

還可以實現 Appender 介面,建立以自己的方式進行日誌輸出的Appender。

3.2.1.使用ConsoleAppender
ConsoleAppender可以用這種方式建立:

ConsoleAppender appender = new ConsoleAppender(new PatternLayout());


建立了一個控制檯appender,具有一個預設的PatternLayout。它使用了預設的System.out 輸出。

3.2.2.使用FileAppender
FileAppender可以用這種方式建立:

FileAppender appender = null;

try {

appender = new FileAppender(new PatternLayout(),"filename");

} catch(Exception e) {}




上面用到的建構函式:

FileAppender(Layout layout, String filename)

例項化一個FileAppender並且開啟變數"filename"指定的檔案。




另一個有用的建構函式是:

FileAppender(Layout layout, String filename, boolean append)

例項化一個FileAppender並且開啟變數"filename"指定的檔案。




這個建構函式還可以選擇是否對指定的檔案進行追加的方式輸出。如果沒有指定值,那麼預設的方式就是追加。

3.2.3.使用WriterAppender
WriterAppender可以用這種方式建立:

WriterAppender appender = null;

try {

appender = new WriterAppender(new PatternLayout(),new FileOutputStream("filename"));

} catch(Exception e) {}




這個WriterAppender使用的建構函式帶有PatternLayout和OutputStream引數,在這種情況下, FileOutputStream用於向一個檔案輸出。當然,它還具有其他可用的建構函式。

3.3.Layout
Appender必須使用一個與之相關聯的 Layout,這樣它才能知道怎樣格式化它的輸出。當前,log4j具有三種類型的Layout:

HTMLLayout 格式化日誌輸出為HTML表格。

PatternLayout 根據指定的 轉換模式格式化日誌輸出,或者如果沒有指定任何轉換模式,就使用預設的轉換模式。

SimpleLayout 以一種非常簡單的方式格式化日誌輸出,它列印級別 Level,然後跟著一個破折號“-“ ,最後才是日誌訊息。

3.4.基本示例
3.4.1.SimpleLayout和 FileAppender
這裡是一個非常簡單的例子,程式實現了SimpleLayout和FileAppender:

import org.apache.log4j.Level;

import org.apache.log4j.Logger;

import org.apache.log4j.SimpleLayout;

import org.apache.log4j.FileAppender;

public class simpandfile {

static Logger logger = Logger.getLogger(simpandfile.class);

public static void main(String args[]) {

SimpleLayout layout = new SimpleLayout();

FileAppender appender = null;

try {

appender = new FileAppender(layout,"output1.txt",false);

} catch(Exception e) {}

logger.addAppender(appender);

logger.setLevel((Level) Level.DEBUG);

logger.debug("Here is some DEBUG");

logger.info("Here is some INFO");

logger.warn("Here is some WARN");

logger.error("Here is some ERROR");

logger.fatal("Here is some FATAL");

}

}




你可以下載: simpandfile.java。 還可以檢視它的輸出: output1.txt.

3.4.2.HTMLLayout和 WriterAppender
這裡是一個非常簡單的例子,程式實現了 HTMLLayout和WriterAppender:

import java.io.*;

import org.apache.log4j.Level;

import org.apache.log4j.Logger;

import org.apache.log4j.HTMLLayout;

import org.apache.log4j.WriterAppender;

public class htmlandwrite {

static Logger logger = Logger.getLogger(htmlandwrite.class);

public static void main(String args[]) {

HTMLLayout layout = new HTMLLayout();

WriterAppender appender = null;

try {

FileOutputStream output = new FileOutputStream("output2.html");

appender = new WriterAppender(layout,output);

} catch(Exception e) {}

logger.addAppender(appender);

logger.setLevel((Level) Level.DEBUG);

logger.debug("Here is some DEBUG");

logger.info("Here is some INFO");

logger.warn("Here is some WARN");

logger.error("Here is some ERROR");

logger.fatal("Here is some FATAL");

}

}




你可以下載: simpandfile.java. 還可以檢視它的輸出:output1.txt.

3.4.3.PatternLayout和 ConsoleAppender
這裡是一個非常簡單的例子,程式實現了PatternLayout和ConsoleAppender:

import org.apache.log4j.Level;

import org.apache.log4j.Logger;

import org.apache.log4j.PatternLayout;

import org.apache.log4j.ConsoleAppender;

public class consandpatt {

static Logger logger = Logger.getLogger(consandpatt.class);

public static void main(String args[]) {

// Note, %n is newline

String pattern = "Milliseconds since program start: %r %n";

pattern += "Classname of caller: %C %n";

pattern += "Date in ISO8601 format: %d{ISO8601} %n";

pattern += "Location of log event: %l %n";

pattern += "Message: %m %n %n";



PatternLayout layout = new PatternLayout(pattern);

ConsoleAppender appender = new ConsoleAppender(layout);

logger.addAppender(appender);

logger.setLevel((Level) Level.DEBUG);

logger.debug("Here is some DEBUG");

logger.info("Here is some INFO");

logger.warn("Here is some WARN");

logger.error("Here is some ERROR");

logger.fatal("Here is some FATAL");

相關推薦

Java log4j.additivity取消日誌繼承為何無效

com active 分析 log4 配置 num 繼承關系 currency 留言 log4j1日誌繼承說明: 略. 簡短說明問題原因: "log4j.additivity"後邊跟的包路徑必須和另一項配置"log4j.logger"後邊跟的包路徑能對上, log4

java視訊教程,Java面試資料

Java程式設計輕鬆入門視訊庫地址:http://yun.itheima.com/course/269.html網盤地址:https://pan.baidu.com/s/1c4bFDJi資料連結:https://pan.baidu.com/s/1o9yLBsu 密碼:wwd0

IT兄弟連 Java語法教程 Java語言的跨平臺特性

什麼是平臺 Java是可以跨平臺的程式語言,那麼首先我們需要知道什麼是平臺,通常我們把CPU與作業系統的整體稱為平臺。 CPU

IT兄弟連 Java語法教程 Java開發環境 配置Java環境變數

在安裝完JDK後,我們需要配置系統的環境變數,否則在控制檯中使用JDK為我們提供的工具時將出現如圖12所示的錯誤資訊。 圖1

Java Log4J 使用教程(java日誌)

1. 簡介2. 安裝3. log4j基本概念3.1. Logger3.2. Appender3.2.1. 使用ConsoleAppender3.2.2. 使用FileAppender3.2.3. 使用WriterAppender3.3. Layout3.4. 基本示例3.4

JAVA log4j日誌文件使用

prop append ive () -1 信息保存 flush console apache //1.導入jar包,log4j-1.2.17.jar//2.src下創建log4j.properties文件//3.配置properties文件/*log4j.rootLogg

Java日誌使用slf4j 配置log4j後,有日誌文件 但日誌文件內容為空

actor 輸出 ole sym ack 拼接 world 輸出參數 %d SLF4J的全稱是Simple Logging Facade for Java,即簡單日誌門面。 SLF4J並不是具體的日誌框架,而是作為一個簡單門面服務於各類日誌框架,如java.util.log

java log4j日誌配置輸出到mysql中

log4j可以支援將log輸出到檔案,資料庫,甚至遠端伺服器,這次給大家分享下如何輸出到mysql中。 (1)log4j.properties的配置內容如下: log4j.rootLogger=ERR

java中常用的日誌框架-logback和log4j

本文主要記錄 一下博主對sl4j和log4j&logback關係的理解及後面兩種日誌框架的配置和區別 三者之間的關係 三者之間的關係:sl4j是介面,log4j和logback是實現 如下圖 logback是直接實現了sl4j,而log4

Java-log4j一直輸出Debug級別的日誌資訊,修改log4j配置檔案後依然如此

如果在之前啟動專案的時候,日誌資訊列印還正常;因為引入了某個架包之後出現“控制檯只能列印Debug級別日誌”的錯誤,就是因為你匯入的架包和log4j架包衝突所導致。 解決辦法很簡單,將引入的架包去除衝突就可以了: <dependency>

java log4j日誌使用

java中使用log4j來進行日誌輸出, 本文只是很簡單的使用方法, 並不深入 , 只是簡單滿足了自己專案的需求。  log4j的配置和使用分為3部分: 1. 專案匯入log4j的jar包 2. 配置

Java使用Log4記錄日誌

.gz string erro error console 操作 config 信息 pat 我們在系統使用中,為了方便查找問題,因此需要記錄操作的日誌,而目前比較成熟穩定的程序日誌記錄方式就是Log4,本人也是菜鳥,然後再學習研究中就記錄一下使用方式,以方便今後查閱,同時

java實時監聽日誌寫入kafka

put article -c exti tab round 1.5 valueof max 目的 實時監聽某目錄下的日誌文件,如有新文件切換到新文件,並同步寫入kafka,同時記錄日誌文件的行位置,以應對進程異常退出,能從上次的文件位置開始讀取(考慮到效率,這裏是每

非常easy的JAVA反射教程

type parameter dna art struct adc cto article new 原創文章,轉載請註明。 反射能夠動態載入類,實例化對象,調用方法。如今以下面樣例解說。 一。載入類。

java springMVC SSM 操作日誌 4級別聯動 文件管理 頭像編輯 shiro redis

java 下拉聯動 頭像裁剪 圖片裁剪 springmvc 官網 http://www.fhadmin.org/ A代碼編輯器,在線模版編輯,仿開發工具編輯器,pdf在線預覽,文件轉換編碼 B 集成代碼生成器 [正反雙向](單表、主表、明細表、樹形表,快速開發利器)+快速表單構

javajava自帶的java.util.logging.Logger日誌功能

lena mat logs pre 默認 closed custom err ole 偶然翻閱到一篇文章,註意到Java自帶的Logger日誌功能,特地來細細的看一看,記錄一下。 1.Java自帶的日誌功能,默認的配置   ①Logger的默認配置,位置在JRE安裝目錄下l

java-log4j-xml配置 category、logger、boot 標簽使用

sina 運放 oot margin XML www inf ava app 掌盞撐貝貪下參鴉傺疑http://www.docin.com/sina_6367437814 於鋅中儀蕾柯檀遜渦塗鼓蛔僑http://www.docin.com/sina_6370801430

java-log4j-xml配置category、logger、boot標簽使用

cin com 標簽 oci ddn tar boot xml配置 使用 卑閑洶誌較黴園錳譖釩蒂http://jz.docin.com/ami17633 綴兄怯烈幕怪杖曝嶽脖擋扯http://shufang.docin.com/ami17633 斬莆曰聞藝諫糜粗順迅吹h

[20]Java實戰項目教程 Java購物項目 最新SSM框架 服務端教程[2.2G]

image aid bdc lan png SSM框架 font java blog 視頻試看鏈接:https://pan.baidu.com/s/1skRge4l 淘寶鏈接:https://item.taobao.com/item.htm?spm=0.7095261.0

Selenium-java-Log4j環境搭建

clas thread stdout inf java login auto this 創建 1、導入Log4j 2、Build Path 3、在/src/main/resource目錄下創建文件,命名為 log4j.properties 4、文件的內容是, 直接