多个Web服务,共享web.config记录,以使用Ent Lib分隔平面文件

时间:2012-12-17 19:02:52

标签: c# .net wcf logging enterprise-library

我正在开发一个项目,我需要使用Enterprise Library v.3.1.1.0 Logging block(希望它是log4net或nlog,但我没有选择)。我们有一个IIS应用程序,其中托管了几个WCF Web服务,它们共享一个web.config文件。这也是我无法改变的事情。

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

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

我已经完成了几个教程,但我不明白如何做到这一点。

任何提示?

1 个答案:

答案 0 :(得分:1)

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

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