繁体   English   中英

使用Log4j.properties以HTML自定义格式进行日志记录

[英]Logging using Log4j.properties in HTML custom format

我需要编辑Apache Log4j文件的输出的帮助。 我正在使用html布局保存创建的日志。 这是我的log4j.properties代码:

log4j.rootLogger = DEBUG, FILEALL, FILEMAIN

log4j.appender.FILEMAIN=org.apache.log4j.FileAppender
log4j.appender.FILEMAIN.File=${logfileall.name}
log4j.appender.FILEMAIN.layout=org.apache.log4j.HTMLLayout
log4j.appender.FILEMAIN.Threshold=DEBUG

log4j.appender.FILEALL=org.apache.log4j.FileAppender
log4j.appender.FILEALL.File=${logfilemain.name}
log4j.appender.FILEALL.layout=org.apache.log4j.HTMLLayout
log4j.appender.FILEALL.Threshold=WARN

这将创建一个这样的日志文件 在此处输入图片说明

我对如何更改输出格式感到困惑。

我希望“时间”列以HH:mm:ss.S格式显示时间戳,并且我不希望“线程”列,

另外,如果可能的话,我想将类别重命名为类似classpath的名称。

请帮忙,如何修改Log4j.properties文件以完成上述操作

您只能为org.apache.log4j.HTMLLayout更改以下选项:

log4j.appender.FILE.layout.Title=HTML Layout Demo
log4j.appender.FILE.layout.LocationInfo=true

顺便说一句,你可以做扩展这个和重载的方法

public String format(LoggingEvent)
public String getHeader()

第一种方法获取每个事件的HTML代码(例如,表中的新行)。 第二种方法获取标头的HTML(从DOCTYPE声明到表标头行,例如<thead>...</thead><tbody> )。

您需要使用指示您首选布局的自定义模式,将HTML布局替换为模式布局。

就像Paul Vargas建议的那样,您需要构建自定义布局来扩展org.apache.log4j.HTMLLayout

在HTMLLayout代码内部,您会看到time列不允许任何格式的format方法内部:

 ...
 sbuf.append("<td>");
 sbuf.append(event.timeStamp - LoggingEvent.getStartTime());
 sbuf.append("</td>" + Layout.LINE_SEP);

线程的格式化是通过以下方式完成的:

 ...
 String escapedThread = Transform.escapeTags(event.getThreadName());
 sbuf.append("<td title=\"" + escapedThread + " thread\">");
 sbuf.append(escapedThread);
 sbuf.append("</td>" + Layout.LINE_SEP);
 ...

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM