【问题标题】:How to make sure that Enterprise library Logger.Write() worked?如何确保企业库 Logger.Write() 工作?
【发布时间】:2013-07-23 12:19:13
【问题描述】:

我正在使用 Enterprise library 5.0 作为日志记录机制。我正在使用平面文件和数据库侦听器。我想确保错误已记录到数据库中,如果在执行相同操作时发生一些错误,错误应该自动开始登录到平面文件。我想我们需要在出现异常时自动切换到平面文件日志记录。

loggingConfiguration name="Logging" tracingEnabled="true" defaultCategory="DatabaseLogging"

但我相信defaultCateogory 是该部分的只读属性。我如何以编程方式做到这一点?

【问题讨论】:

  • :-D 那是我的姓!感谢您对这个问题的帮助:-)

标签: c# asp.net-mvc exception exception-handling enterprise-library


【解决方案1】:

您可以考虑使用单元测试,以确保将记录所有不同情况下的错误,这就是我们进行单元测试的原因:)

单元测试都是关于自动化的,因此您需要能够自动化日志条目的验证。

您也可以考虑使用优先级。 (用于过滤Log Entries,只处理“Minimum Priority”以上的),所以优先级高的,也可以放到平面文件中。

希望它会有所帮助。

【讨论】:

  • 感谢您的快速回复,如果我们使用 VSTS 2010(自动化工具)进行自动化,我想检查数据库日志的唯一方法是进行昂贵的数据库调用并检查记录是否存在。如果 logger.write 方法在登录到 db 时发生任何错误时抛出一些异常,那就太好了。
  • @Bose_geek,您可以创建/模拟自定义跟踪侦听器,您可以查询以验证是否记录了适当的消息。有关 Enterprise Library 4 示例,请参阅 stackoverflow.com/questions/1759141/…。配置会有所不同,但方法相似。
【解决方案2】:

有一个名为 Logging Errors & Warnings 的特殊类别,您应该将其连接到一个侦听器,以便在您的正常日志记录类别失败时收到通知。您还应该将侦听器按从最有可能工作到最有可能失败的顺序排列在您的正常类别中,因为一旦出现故障,对侦听器的写入将停止。

此外,默认类别不是只读的。如果您在创建日志条目时未指定类别,那么这就是将写入日志的类别。但是,日志记录错误不会写入该类别。那些只进入记录错误和警告特殊类别。

【讨论】:

  • 所以据我所知(如果我错了,请纠正我),日志记录错误和警告将在我们的正常类别失败的情况下工作。好吧,当我尝试从程序中设置默认类别值时,它抛出了一个只读异常(尽管我将日志配置作为部分获取)
  • 当正常类别匹配时,日志将发送到 Logging Errors & Warnings,但在调用跟踪侦听器时发生异常。当没有类别匹配时,它们被发送到默认类别。您可以在配置文件中设置默认类别,也可以使用fluent API 来配置企业库。可以将这些方法结合起来,但我从未尝试过。在代码中直接更改配置部分是行不通的。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-05-29
  • 1970-01-01
  • 2013-04-26
  • 1970-01-01
  • 1970-01-01
  • 2012-09-28
相关资源
最近更新 更多