如何在Eclipse中查看Java日志文件

7

我在Eclipse中运行一些JUnit测试,我的代码使用java日志API(java.util.logging)生成XML日志文件。除了阅读原始XML之外,是否有一种简单的方法在Eclipse中查看此XML日志输出?具体而言,我想能够轻松地查看不同日志消息来自哪些线程。

7个回答

4

我一直在使用SLF4J日志API和Logback日志实现。SLF4J可配置为将java.util.logging、log4j、jakarta commons logging和SLF4j API中的日志消息映射到共同的中间形式。另一方面,这些消息可以通过java.util.logging、log4j或Logback生成。这是一种灵活的方法,特别适用于使用不同日志API的组件。

Logback的一个好处是你可以配置它将日志消息的副本发送到Eclipse插件。该插件能让你以多种方式查看和过滤日志文件。消息中包含了生成它们的线程,因此这听起来像是值得一试的东西。


虽然正在进行新版本的改进工作,但这是真实的。 - Ceki

2

我认为你正在寻找和我一样的东西。我找到了UtilLogger4E,但我开始自己的项目(EDevTools LogViewer),因为它缺少一些功能并且不是开源的。

它能够从文件或可配置的套接字读取Java Util Logging XML日志,以级别着色显示在表格中,并且可以同时显示多个日志(通过多个视图实例)。

Java Util Logging有一个内置功能将日志发送到套接字(SocketHandler),只需要通过配置文件进行设置。

你可以在以下链接查看LogViewer:http://sourceforge.net/projects/edevtools/


2
如果您想使用不基于Eclipse的日志查看器,我建议您使用OtrosLogViewer。它可以导入java.util.logging XML格式和SimpleFormat。
免责声明:我是OtrosLogViewer的作者。

1
根据你想要做的具体内容,你可能只需要一个良好的日志记录设置来记录子系统的日志吗?
我最近使用的一个框架使用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

1

我一直希望能够找到类似 Apache Chainsaw 这样的东西,适用于 java.util.logging/Eclipse 组合。也就是说,在 Eclipse 中监听一个端口的日志查看器和一个 java.util.logging.Handler 实现直接写入该端口。但是我还没有找到这样的东西,并且也没有写过类似的东西。到目前为止,我只是使用适当的纯文本格式来记录控制台日志。虽然不够优雅,也没有方便的过滤选项,但它可以胜任工作。编写自己的自定义格式化程序并不难。

Eclipse 的 Test and Performance Tools Platform Project 中提供了一些分析日志文件的支持(名称甚至比首字母缩写还糟糕)。我从未尝试过,但这可能对您有用。


Peter,请看一下我关于SLF4J/Logback的注释。 它就是这样做的,尽管Thorbjørn指出在使用当前版本的logback时存在一个错误(Ceki说他们正在努力解决这个问题)。 - Jim Ferrans
我更喜欢不会在我的生产代码中添加依赖项的解决方案。特别是,SLF4J已经通过在点发布之间进行不兼容的API更改而使我受挫,在我使用Maven构建的项目中出现了间接依赖项的问题。java.util.logging可能并非完美,但我仍然认为没有理由去采用其他解决方案所引入的额外成本和风险。 - Peter Becker

1

顺便提一下,一个非常好的实时查看日志文件的工具是baretail(实际上相当于Windows上的tail -f),但可以设置突出显示某些模式的颜色,这真的很有帮助。你可以在这里找到一个免费版本。


0

我不知道Eclipse怎么能知道你的线程。如果是XML,你需要编写一个可以使用XPath查找线程消息并将其打印出来的解析器。但这取决于你自己——Eclipse无法读取你的想法。

你需要找到一个XSL-T样式表,可以从log4j生成的XML流中提取出你想要的线程。


该线程是Java.util.logging输出的一部分。请参见http://java.sun.com/j2se/1.4.2/docs/guide/util/logging/overview.html#2.4。 - Peter Becker

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接