繁体   English   中英

Java中的结构化HTML日志记录

[英]Structured HTML logging in Java

基于文本的日志记录的缺点是难以阅读和理解。 有没有可以让我生成结构化且外观美观的日志文件的库?

例如,关于以下日志语句的问题:

logger.log('Request received from gateway', request)

输出可能是这样的:

<p>Request received from gateway. <a href='detail.html#163'>Details</a></p>

这样日志文件log.html显示:

Thursday 14th March 04:8:13 - Request received from gateway. 细节

在这里,详细信息可能是带有请求对象的String dump的另一个HTML文件中的锚定超链接。

这种方法的优点是可以减少冗长程度。 与其立即将所有详细信息转储到屏幕上,不如仅查看概述。 如果需要,以及何时需要查看,细节将显示在弹出窗口中。

如何在Java中创建更具可读性的结构化日志?

我没有找到任何适合我需要的东西。 因此,我创建了一个名为log4j-weblayout的小型开源库

log4j中有一个org.apache.log4j.HTMLLayout ,但我认为它没有用。 它所做的只是将您的语句转储到HTML表中。 尽管这比文本转储更好,但它没有利用HTML功能,例如字体颜色和弹出窗口。

有关介绍和用法的信息,请访问项目网站

功能列表(会随着添加的更多内容而更新):

  1. 更好的时间戳处理。 日志文件中冗长的主要来源是重复时间戳。 基于文本的文件的每个日志语句都具有完整的时间戳,例如: Sat Jul 23 2005 02:16:57 150ms 这增加了详细程度。 如果您打印较短的表格(例如02:16:57则会丢失重要的细节。 Weblayout通过打印简洁易读的表格并在鼠标悬停在弹出窗口上显示完整日期来达到最佳效果。
  2. 通过颜色编码区分等级。 不同级别的陈述彼此脱颖而出。
  3. 在运行时切换日志级别。 使用文本文件,您可以在运行应用程序之前设置日志级别。 查看日志时无法更改级别。 Weblayout在屏幕顶部提供了一个小工具箱,可使用Javascript切换级别。
  4. 更好的异常处理。 将多个异常组合在一起以显示问题的单个一致描述。 例如,它将ConnectExceptionIllegalArgumentExceptionParseException合并为以下内容: Did not receive response from server, because The request is not valid, because Date cannot be in the past
  5. 更好的堆栈跟踪处理。 默认情况下, logger.info(exception)将仅记录消息,而不记录stacktrace。 如果您手动将stacktrace提取为字符串并将其传递给log4j,则它将不太可读。 log4j-weblayout将自动执行此操作,并以与IDE相同的方式漂亮地打印它。

暂无
暂无

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

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