c# - 具有共享 web.config 日志记录的多个 Web 服务使用 Ent Lib 分离平面文件

标签 c# .net wcf logging enterprise-library

我正在做一个项目,我需要使用 Enterprise Library v.3.1.1.0 日志 block (希望它是 log4net 或 nlog,但我别无选择)。我们有一个 IIS 应用程序,其中托管了多个 WCF web 服务,并且它们共享一个 web.config 文件。这也是我无权改变的。

这些服务之前都没有实现任何日志记录。

因此,使用 Ent Lib Config 实用程序设置滚动平面文件监听器并以我想要的方式记录到文本文件非常简单。我遇到的问题是正确配置它,因此每个服务都可以有自己单独的日志文件,同时它们仍然共享相同的 web.config。

我已经学习了几个教程,但我不了解如何执行此操作。

有什么建议吗?

最佳答案

web.config 中的配置是静态的,因此每个配置的跟踪监听器都有一个文件。实现每个服务一个文件的一种方法是让每个服务记录到不同的类别,并且每个类别使用不同的跟踪监听器。这甚至可以通过编程方式完成,以便服务可以在运行时添加自己的跟踪监听器,尽管这比手动更新配置文件要高级一些(例如,确保只添加一次服务,并确保在更新配置时它是线程安全)。

Enterprise Library 没有任何类似于 log4net 的分层记录器的东西,因此没有开箱即用的方法来使用反射来根据原始类路由日志消息。这可能是可能的,但你将不得不编写一些代码。您可以编写一个 Logger 外观类来根据调用者命名空间设置类别。 (另请注意,没有像 log4net 那样的命名空间通配符匹配。)

关于c# - 具有共享 web.config 日志记录的多个 Web 服务使用 Ent Lib 分离平面文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13920413/

相关文章:

c# - DynamicObject 二元运算的绑定(bind)行为因运算符和操作数而异

c# - 如何强制派生类实例化基类的构造函数

WPF、WCF、Entity、MVVM的疑惑!

.net - 如何将 xsl 样式表节点添加到 XmlSerializer 生成的 XML?

c# - PrintPreviewDialog中MeasureString测得的字符串高度与实际打印时不一致

c# - chrome adobe pdf reader javascript 黑屏

c# - 如何跟踪 Entity Framework 中更新了哪些实体

c# - jQuery 对话框在 Response.TransmitFile 之后不会从代码隐藏中关闭

c# - 依赖响应 cookie 的集成测试抛出 System.NullReferenceException

.net - 如何对配置进行单元测试