日志框架是否应该真正吞下日志记录失败?

时间:2013-04-15 20:16:08

标签: logging

虽然毫无疑问记录器不应该导致应用程序崩溃,但是当我修复我的公司记录器时,我不确定如何正确地吞下日志框架本身抛出的异常。在元代码中:

public void write(TMessage message)
{
    try
    {
        writeUnsafely(message);
    }
    catch(Exception loggingException)
    {
        // what should I do here?
    }
}

我应该忽略loggingException(就像log4net那样),还是应该让客户端代码选择如何处理它(可能使用可配置的处理程序)?

2 个答案:

答案 0 :(得分:2)

这完全取决于你,但无论你决定如何,都要记录下来。除了在代码和用户中增加复杂性之外,我认为使其可配置无害。

您可以改为编写没有错误且不会抛出任何异常的完美代码。 ;-)

答案 1 :(得分:1)

NLog有一个配置选项,允许将日志配置为抛出异常(或不抛出异常):

https://github.com/nlog/nlog/wiki/Configuration-file

(请参阅“记录疑难解答”部分)。

似乎给客户端代码一个处理它的机会是一个合理的选择。关于客户端程序应如何处理异常的建议可能包含在您的文档中(如果您选择实现此类功能)。一个例子可能是"您可以在应用程序的未处理异常处理程序中捕获LoggingException。"

相关问题