Logging 日志框架真的应该接受日志失败吗?

Logging 日志框架真的应该接受日志失败吗?,logging,Logging,虽然毫无疑问,记录器不应导致应用程序崩溃,但在我对公司记录器进行错误修复时,我不确定如何正确地接受日志框架本身引发的异常。在元代码中: public void write(TMessage message) { try { writeUnsafely(message); } catch(Exception loggingException) { // what should I do here? } } 我应该忽略

虽然毫无疑问,记录器不应导致应用程序崩溃,但在我对公司记录器进行错误修复时,我不确定如何正确地接受日志框架本身引发的异常。在元代码中:

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

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

这完全取决于您,但无论您决定什么,都要记录它。除了增加代码和用户的复杂性之外,我认为使其可配置并没有什么坏处


您可以只编写完美的代码,它没有bug,也不会抛出任何异常<代码>;-)

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

(请参阅故障排除日志部分)


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

谢谢,您的链接确实说服了客户机可以配置内部异常处理程序。log4net似乎也有类似的功能:如果它是可选的,那么增加的复杂性是最小的;)我希望永远不需要它。。。这是“以防万一”:D