log4j HTMLLayout


如果想生成一個HTML格式的檔案,紀錄檔資訊,那麼可以使用 org.apache.log4j.HTMLLayout 格式化紀錄檔資訊。

HTMLLayout類擴充套件抽象org.apache.log4j.Layout類,並覆蓋其基礎類別的 format()方法來提供HTML樣式格式。

這提供了以下資訊顯示:

  • 生成特定的紀錄檔事件之前,從應用程式的開始所經過的時間

  • 呼叫該記錄請求的執行緒的名稱

  • 與此記錄請求相關聯的級別

  • 紀錄檔記錄器(Logger)和記錄訊息的名稱

  • 可選程式檔案的位置資訊,並從其中記錄被呼叫的行號

HTMLLayout是一個非常簡單的布局物件,它提供以下方法:

S.N. 方法 & 描述
1 setContentType(String)
設定 text/html 為 HTML內容的內容型別。預設為 text/html
2 setLocationInfo(String)
設定位置資訊記錄事件。預設為 false
3 setTitle(String)
設定為HTML檔案的標題。預設值是Log4j的紀錄檔資訊

HTMLLayout 例子:

以下是對HTMLLayout一個簡單的組態檔案:

# Define the root logger with appender file
log = /usr/home/log4j
log4j.rootLogger = DEBUG, FILE

# Define the file appender
log4j.appender.FILE=org.apache.log4j.FileAppender
log4j.appender.FILE.File=${log}/htmlLayout.html

# Define the layout for file appender
log4j.appender.FILE.layout=org.apache.log4j.HTMLLayout
log4j.appender.FILE.layout.Title=HTML Layout Example
log4j.appender.FILE.layout.LocationInfo=true

現在考慮下面的Java例子用於產生紀錄檔資訊:

import org.apache.log4j.Logger;

import java.io.*;
import java.sql.SQLException;
import java.util.*;

public class log4jExample{
  /* Get actual class name to be printed on */
  static Logger log = Logger.getLogger(
                      log4jExample.class.getName());

  public static void main(String[] args)
                throws IOException,SQLException{
   
     log.debug("Hello this is an debug message");
     log.info("Hello this is an info message");
  }
}

編譯並執行上述程式,它會在 /usr/home/log4j 目錄建立 htmlLayout.html 檔案,該檔案將有如下的紀錄檔資訊:


Log session start time Mon Mar 22 13:30:24 AST 2014

Time Thread Level Category File:Line Message
0 main DEBUG log4jExample log4jExample.java:15 Hello this is an debug message
6 main INFO log4jExample log4jExample.java:16 Hello this is an info message

可以使用一個Web瀏覽器開啟htmlLayout.html 檔案。同樣重要的是要注意,頁尾</ HTML>和</ body>標記是完全缺失。

一個具有HTML格式的紀錄檔檔案的一大優勢是,它可以被發布為網頁可以遠端檢視。