Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 具有共享web.config日志记录的多个web服务使用Ent Lib分离平面文件_C#_.net_Wcf_Logging_Enterprise Library - Fatal编程技术网

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

C# 具有共享web.config日志记录的多个web服务使用Ent Lib分离平面文件,c#,.net,wcf,logging,enterprise-library,C#,.net,Wcf,Logging,Enterprise Library,我正在从事一个项目,其中要求我使用Enterprise Library v.3.1.1.0日志块(希望它是log4net或nlog,但我别无选择)。我们有一个IIS应用程序,其中托管了多个WCF web服务,它们共享一个web.config文件。这也是我不能随意改变的 这些服务之前都没有实现任何日志记录 因此,使用entlibconfig实用程序来设置滚动平面文件侦听器并以我想要的方式登录到文本文件是非常简单的。我遇到的问题是正确配置它,这样每个服务都可以有自己的单独日志文件,而它们仍然共享相同

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

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

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

我已经阅读了好几篇教程,但我不知道如何做


任何提示?

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


企业库没有任何类似于log4net的分层记录器的东西,因此没有现成的方法根据原始类使用反射来路由日志消息。这可能是可能的,但您必须编写一些代码。您可以编写一个Logger facade类来根据调用者名称空间设置类别。(还请注意,没有类似log4net的名称空间通配符匹配。)

不确定为什么会将其关闭为完全重复;这是一个与链接问题完全不同的问题,链接问题的答案根本不能回答我的问题。我需要知道如何从共享同一web.config的多个不同web应用程序登录到多个平面文件。配置是静态的,因此每个配置的跟踪侦听器将有一个文件。你可以让每个服务日志指向使用不同跟踪侦听器的不同类别。谢谢Tuzo,我想我还没有真正理解这样使用类别的概念。我想我必须以某种方式强制每个不同的服务只登录到他们自己的类别,但我想我可以在注释或其他东西中记录这一点。您知道有什么方法可以使用反射按原始类路由日志事件吗?我知道你可以在log4net开箱即用中做到这一点。没有开箱即用的方法来使用反射路由日志事件。这可能是可能的,但您必须编写一些代码。您可以编写一个Logger facade类来根据调用者名称空间设置类别。(还请注意,没有像Log4Net那样的名称空间通配符匹配。)@Tuzo,我已经实现了您的建议,为每个服务记录到单独的类别,它工作得非常完美。此外,您建议编写一个facade,它使用反射根据类或名称空间自动将日志指向某个类别,这也很有效。如果你写这封信作为回答,我会把它标为接受并投票表决;这是一个很好的解决办法。