按上下文记录消息的子集

时间:2009-10-01 15:41:23

标签: logging

我工作的应用程序做了很多事情,我发现在我查看它时很难解析日志。特别是当我调试/测试特定的代码时。并且必须浏览不相关日志数据的页面和页面。

是否有一种合理的方式来管理日志记录(Primarilly in Java,但也对.Net感兴趣)这将允许我在我正在处理特定功能时只提交一组子事件但允许我在其他时间记录所有内容。

我已经考虑了Labling我感兴趣的日志语句并对它们进行grepping,或者将logger库(log4j / log4net)包装在一个允许我指定我感兴趣的上下文的类中,并且仅承诺。

有没有标准的方法来做到这一点?

目前的例子我对每秒运行一次的几个计划任务的输出不感兴趣,而且我对围绕我的中间层类的两个层的输出不感兴趣。但我对它的输出很感兴趣。

1 个答案:

答案 0 :(得分:3)

使用log4j / log4net时控制应用程序不同部分详细程度的关键是适当地命名记录器。通常,约定是将它们命名为与它们相关的完全限定类名,但是您可以使用任何您想要的任意名称。记录器名称只是一个分层的虚线命名空间,您作为开发人员可以根据需要定义。

一旦定义了应用程序中的区域(命名空间层次结构中的每个节点都是“区域”),您就可以为每个区域配置详细程度,并为您正在关注的区域获取非常详细的DEBUG级别消息虽然只是通过说出来自其他地区的ERROR级别的消息。

您对自己感兴趣的上下文没有多说,但在log4j和log4net中,您可以定义添加到LoggingEvent个实例的属性。您可以使用现有的Filter类或创建定制的Filter类,这些类允许事件通过或不基于它们的属性。然后,您可以在log4j / log4net配置中配置过滤器,然后您应该能够非常具体地了解从应用程序中的特定区域输出的日志记录信息。

注意:要将过滤器与log4j一起使用,您必须使用XML而不是.properties文件进行配置。