【发布时间】:2010-11-04 04:38:38
【问题描述】:
我正在 Eclipse 中运行一些 JUnit 测试,并且我的代码正在使用 java 日志记录 API 生成一个 XML 日志文件。 (java.util.logging)。除了读取原始 XML 之外,是否有一种简单的方法可以在 Eclipse 中查看此 XML 日志输出?具体来说,我希望能够轻松查看不同日志消息来自哪些线程。
【问题讨论】:
我正在 Eclipse 中运行一些 JUnit 测试,并且我的代码正在使用 java 日志记录 API 生成一个 XML 日志文件。 (java.util.logging)。除了读取原始 XML 之外,是否有一种简单的方法可以在 Eclipse 中查看此 XML 日志输出?具体来说,我希望能够轻松查看不同日志消息来自哪些线程。
【问题讨论】:
我不知道 Eclipse 如何知道您的线程。如果是 XML,您需要编写一个解析器,该解析器可以使用 XPath 找到您的线程消息并将它们打印出来。但这取决于你 - Eclipse 无法读懂你的想法。
您必须找到一个 XSL-T 样式表,该样式表可以获取 log4j 生成的 XML 流并提取您想要的线程。
【讨论】:
我一直希望为 java.util.logging/Eclipse 组合找到类似 Apache Chainsaw 的东西,即 Eclipse 中的日志查看器监听端口和直接写入该端口的 java.util.logging.Handler 实现.但是我还没有找到这样的东西,也没有写一个。到目前为止,我只是使用合适的纯文本格式登录到控制台。不优雅也没有方便的过滤选项,但它可以完成工作。编写自己的自定义格式化程序一点也不难。
在 Eclipse 的 Test and Performance Tools Platform Project 中提供了一些对分析日志文件的支持(这个名称比首字母缩写词还要糟糕)。我从未尝试过,但它可能对你有用。
【讨论】:
另一方面,用于实时查看日志文件的出色工具是 baretail(本质上是 Windows 上的 tail -f),但可以设置为突出显示某些颜色模式,这真的很有帮助。您可以找到免费版本here。
【讨论】:
根据您要执行的操作,您可能只需要为您的日志记录子系统设置一个良好的日志记录设置?
我最近使用的一个框架使用 slf4j 进行日志记录,通过提供以下 log4j 配置,我可以查看哪些线程输出了什么:
log4j.rootLogger = trace, default
log4j.appender.default = org.apache.log4j.ConsoleAppender
log4j.appender.default.layout = org.apache.log4j.PatternLayout
log4j.appender.default.layout.ConversionPattern = %-4r [%t] %-5p %c %x - %m%n
在我的例子中,当我运行 junit 测试时,我在 Eclipse 的“控制台”选项卡中得到类似于以下内容的输出。
0 [pool-1-thread-1] INFO com.example.BaseTest - Server listening on port 9090
35 [NioProcessor-6] INFO org.apache.mina.filter.logging.LoggingFilter - CREATED
35 [NioProcessor-1] INFO org.apache.mina.filter.logging.LoggingFilter - CREATED
【讨论】:
我一直在使用 SLF4J 日志记录 API 以及 Logback 日志记录实现。 SLF4J 可以配置为将 java.util.logging、log4j、jakarta commons logging 和 SLF4j API 中的日志消息映射到一个通用的中间形式。另一方面,可以通过 java.util.logging、log4j 或 Logback 生成消息。这是一种效果很好的灵活方法,尤其是当您的组件使用不同的日志记录 API 时。
Logback 的一个好处是您可以将其配置为将日志消息的副本发送到Eclipse plug-in。该插件可让您以多种方式查看和过滤日志文件。消息包含生成它们的线程,因此听起来您应该检查一下。
【讨论】:
我认为您正在寻找与我相同的东西。我找到了 UtilLogger4E,但我开始了自己的项目(EDevTools LogViewer),因为它缺少一些功能并且不是开源的。
它能够从文件或可配置套接字中读取 Java Util Logging XML 日志,在表格中按级别显示它们,并且一次可以显示多个日志(通过多个视图实例)。
Java Util Logging 有一个内置的功能,可以将日志发送到套接字(SocketHandler),它只能由配置文件设置。
您可以在以下位置查看 LogViewer:http://sourceforge.net/projects/edevtools/
【讨论】:
如果你想使用非基于eclipse的日志查看器,我推荐你OtrosLogViewer。我可以导入 java.util.logging XML 格式和 SimpleFormat。
免责声明:我是 OtrosLogViewer 的作者
【讨论】: