【问题标题】:Log4net: Log Context Only for ExceptionLog4net:只为异常记录上下文
【发布时间】:2010-11-03 22:43:51
【问题描述】:

我正在寻找一种方法来收集一组仅用于调试的数据。即,仅当我记录异常时才应记录数据。当我收到带有ILog.ErrorFatalDebug 的异常参数时,我想记录额外的信息。记录其他异常数据时,不应记录额外信息。

我打算使用 GlobalContext 或 ThreadContext 来构建数据集。

我的想法是连接到 Log4Net 并附加到我想像的事件,以更改消息模式以包含上下文,但我找不到任何可以帮助我的事件。也许有更简单的方法?

你觉得这个整体设计怎么样?我是在正确的轨道上还是我错过了什么?

如果这种方式好,我该如何实现呢?

【问题讨论】:

    标签: exception logging log4net


    【解决方案1】:

    加入和改变模式感觉不太对劲。我建议看一下过滤器的东西。因此,您将设置使用 MessagesWithExceptionOnly 过滤器的“ForMessagesWithExceptionsOnly”附加程序。这个 appender 当然只会处理包含异常的消息。

    要实现 MessagesWithExceptionOnly 过滤器,请查看 FilterSkeleton

    【讨论】:

    • 我不太明白。你想创建两个具有不同布局模式的附加程序,一个打印上下文属性,一个只打印消息。创建两个文件管理器,一个只接受有异常的日志事件,一个拒绝。然后将过滤器添加到适当的附加程序?这似乎有点麻烦。
    • 没错。除了您不必创建两个过滤器类之外,您可以在两个附加程序上重用相同的过滤器,并且只在两者上反转 AcceptOnMatch 设置。也许更多的配置,但imo是一种更清洁的方法。我还怀疑在运行时修改模式会产生性能影响。
    猜你喜欢
    • 1970-01-01
    • 2011-01-08
    • 1970-01-01
    • 2010-10-07
    • 2015-11-11
    • 2013-01-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多