我在Eclipse中运行一些JUnit测试,我的代码使用java日志API(java.util.logging)生成XML日志文件。除了阅读原始XML之外,是否有一种简单的方法在Eclipse中查看此XML日志输出?具体而言,我想能够轻松地查看不同日志消息来自哪些线程。
我认为你正在寻找和我一样的东西。我找到了UtilLogger4E,但我开始自己的项目(EDevTools LogViewer),因为它缺少一些功能并且不是开源的。
它能够从文件或可配置的套接字读取Java Util Logging XML日志,以级别着色显示在表格中,并且可以同时显示多个日志(通过多个视图实例)。
Java Util Logging有一个内置功能将日志发送到套接字(SocketHandler),只需要通过配置文件进行设置。
你可以在以下链接查看LogViewer:http://sourceforge.net/projects/edevtools/
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
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
我一直希望能够找到类似 Apache Chainsaw 这样的东西,适用于 java.util.logging/Eclipse 组合。也就是说,在 Eclipse 中监听一个端口的日志查看器和一个 java.util.logging.Handler 实现直接写入该端口。但是我还没有找到这样的东西,并且也没有写过类似的东西。到目前为止,我只是使用适当的纯文本格式来记录控制台日志。虽然不够优雅,也没有方便的过滤选项,但它可以胜任工作。编写自己的自定义格式化程序并不难。
Eclipse 的 Test and Performance Tools Platform Project 中提供了一些分析日志文件的支持(名称甚至比首字母缩写还糟糕)。我从未尝试过,但这可能对您有用。
顺便提一下,一个非常好的实时查看日志文件的工具是baretail(实际上相当于Windows上的tail -f),但可以设置突出显示某些模式的颜色,这真的很有帮助。你可以在这里找到一个免费版本。
我不知道Eclipse怎么能知道你的线程。如果是XML,你需要编写一个可以使用XPath查找线程消息并将其打印出来的解析器。但这取决于你自己——Eclipse无法读取你的想法。
你需要找到一个XSL-T样式表,可以从log4j生成的XML流中提取出你想要的线程。