2

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

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

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

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

有小费吗?

4

1 回答 1

1

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

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

于 2013-09-03T23:04:12.760 回答