【问题标题】:Enterprise library Logging application block fails to write to database企业库日志记录应用程序块无法写入数据库
【发布时间】:2013-08-01 23:55:16
【问题描述】:

在我的应用程序中,我使用企业库日志记录应用程序块将异常记录到 DB。此外,我正在使用 fluent API 配置日志记录应用程序块。

我注意到的事情:

  1. 当我没有使用 Fluent API 并且数据库日志记录失败时,它会将异常记录到 Windows 事件日志中。(版本 5.0)
  2. 但是当我使用它(Fluent API)时,如果数据库发生故障,它不会在任何地方记录异常,甚至在窗口事件日志中也是如此。

我的问题:

  1. 这是企业库日志记录应用程序块的正常行为吗?
  2. 有没有什么方法可以使用流畅的 API 获得没有它的功能,意思是(以防数据库日志记录失败记录到 Windows 事件日志)。

如有任何差异,请随时提出建议。 :-)

【问题讨论】:

    标签: c# exception-handling enterprise-library enterprise-library-5 tracelistener


    【解决方案1】:

    确切的语法取决于您现有的配置。假设您没有配置要使用的跟踪侦听器或格式化程序:

    configurationSourceBuilder
        .ConfigureLogging()
        .SpecialSources.LoggingErrorsAndWarningsCategory
        .SendTo.EventLog("Event Log Listener")
        .FormatWith(new FormatterBuilder().TextFormatterNamed("Text Formatter"));
    

    如果您已经配置了要使用的事件日志跟踪侦听器(在此示例中名为“事件日志侦听器”):

    configurationSourceBuilder
        .ConfigureLogging()
        .SpecialSources.LoggingErrorsAndWarningsCategory
        .SendTo.SharedListenerNamed("Event Log Listener");
    

    如果您已经配置了要使用的日志格式化程序(在本例中名为“文本格式化程序”):

    configurationSourceBuilder
        .ConfigureLogging()
        .SpecialSources.LoggingErrorsAndWarningsCategory
        .SendTo.EventLog("Event Log Listener")
        .FormatWithSharedFormatter("Text Formatter");
    

    【讨论】:

    • 我的问题再次是-如果除了我将通过 Fluent API 设置的连接字符串之外的 web 配置中配置了everyting,日志记录应用程序是否会阻止将异常记录到 windows 事件登录数据库日志记录失败的情况?
    • 不,我不认为这是默认行为。您已将跟踪侦听器分配给“记录错误和警告”特殊类别,这就是此代码正在执行的操作。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-12-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多