[英]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.