如何组织java日志条目?

时间:2012-03-14 16:55:40

标签: java logging

我想将我的java日志条目分组,以便更容易地在其中进行搜索。 我的意思是有下一个日志记录:

14-Mar-2012 14:29:07 com.acme.service.AcmeService log
INFO: Start ACME operation
14-Mar-2012 14:29:07 com.acme.service.AcmeService log
INFO: step 1 - do something
...
14-Mar-2012 14:29:07 com.acme.service.AcmeService log
INFO: End ACME operation

这些记录彼此属于,因为这些是工作流程的步骤(例如,我想跟踪Web服务的过程)。 是否有一个良好的设计模式来保存这些记录,我将能够轻松地找到Web服务请求的日志? (例如,在所有日志条目的开头加上一个ID)? 是否有工具可以通过自动分组来显示这些日志?像log4j电锯,但这个ID组合在一起? 谢谢!

4 个答案:

答案 0 :(得分:4)

您是否在网络应用中使用会话?如果是这样,您可以使用会话ID来区分请求。

对不起,刚看到你的例子,我认为你正在使用java.util.Logging。以下内容仅适用于log4j。我现在很想知道是否还有人有我想知道的修复工具。根据我对两者的经验,我发现log4j更容易使用和配置。

Log4j解决方案

通过过滤器传递所有请求,然后使用NDC.push( id )。然后在模式中使用%x输出到文件。

答案 1 :(得分:2)

为什么不扩展Level并添加自己的自定义级别。您的所有Web服务日志记录都可以在该级别完成。

一旦拥有自己的级别,您就可以自定义记录方式,包括记录到不同的文件等

答案 2 :(得分:0)

如果您使用的是Spring技术,则可以轻松配置Spring Integration模块以接收通道中的日志,使用路由器按类型拆分它们并使用出站适配器将它们保存到数据库中。很多线路都是开箱即用的,你只需要做很少的编码。

http://www.springsource.org/spring-integration#documentation

答案 3 :(得分:0)

您可以使用Chainsaw来解析常规文本日志文件,无论使用什么日志API来创建它。请参阅欢迎选项卡中提供的示例receiver config xml中的LogFilePatternReceiver示例。

在您的示例中,一旦在日志文件输出中包含会话,就可以将会话添加为属性,然后使用会话进行着色/排序和过滤。您还可以将该会话ID用作“记录器”,并获得记录器树能够专注于单个记录器的好处,从而基本上为您提供“分组”行为。