13 Log4j HTMLLayout

Log4j HTMLLayout

如果您希望以HTML格式输出日志文件,可使用org.apache.log4j.HTMLLayout格式化日志信息。

HTMLLayout继承自抽象类org.apache.log4j.Layout,覆盖了其format()方法来提供HTML格式。

它提供了如下信息以供显示:

  • 从应用启动到日志产生之间经过的时间。
  • 发起记录日志请求的线程名字。
  • 和记录日志请求关联的级别。
  • logger的名字和日志信息。
  • 程序文件的位置信息和触发日志的行号,该信息是可选的。

HTMLLayout方法

HTMLLayout是一种非常简单的Layout对象,它提供了如下方法:

HTMLLayout方法 描述
setContentType(String) 设置HTML的内容类型,默认为text/html
setLocationInfo(String) 设置日志事件的地域信息。
setTitle(String) 设置HTML文件的标题,默认为Log4j Log Messages

HTMLLayout示例

下面是为HTMLLayout编写的一个简单配置文件:

/Log4jDemo/Log4jConfig/HTMLLayout/log4j.properties
1
2
3
4
5
6
7
8
9
10
11
12
13
14
# Define the root logger with appender file
#log = /usr/home/log4j
#log = E:/workspacne_JDK8Tomcat8.5/log4jDemo
log4j.rootLogger = DEBUG, FILE

# Define the file appender
log4j.appender.FILE=org.apache.log4j.FileAppender
#log4j.appender.FILE.File=${log}/htmlLayout.html
log4j.appender.FILE.File=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

Log4jExample.java

下面的Java程序会生成日志信息:

/Log4jDemo/src/demo/Log4jExample.java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
package demo;

import java.io.IOException;
import java.sql.SQLException;
import org.apache.log4j.Logger;

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-a-debug-message");
log.info("Hello this is an info message");
}
}

运行结果

编译和运行上述程序,在项目根路径下,会生成一个名为htmlLayout.html的文件,该文件包含如下日志信息:
图片
您可以使用浏览器打开htmlLayout.html文件。需要注意的是末尾缺失了</body></html>标签。但是并不影响浏览器解析。

将日志格式化为HTML的一个优势在于可将其发布成一个Web页面,便于远程浏览。