托管在Windows服务上的WCF服务中的log4net

问题描述:

我有一个托管在Windows服务上的WCF服务。托管在Windows服务上的WCF服务中的log4net

我应该在哪里放XmlConfigurator.Configure();

在其他应用程序,我可以把它放在Application_Start()

我可以把这个在我的Windows服务的OnStart()方法?然后我能够从我的WCF服务实例化记录器吗?

这是我的我的实例记录:

private readonly ILog _log = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType); 

这是我在我的窗口服务

protected override void OnStart(string[] args) 
    { 
     if (AgentServiceHost != null) 
     { 
      AgentServiceHost.Close(); 
     } 

     AgentServiceHost = new ServiceHost(typeof(CustoemrService)); 
     AgentServiceHost.Open(); 
    } 

只要把这段代码在你的AssemblyInfo.cs文件:

[assembly: log4net.Config.XmlConfigurator(Watch=true)] 

http://logging.apache.org/log4net/release/manual/configuration.html

+0

对于我需要log4net的每个项目?即如果我需要登录到我的WCF服务项目以及我的Windows服务项目中,我必须将此行添加到两者中? – 2013-04-25 08:06:26

+0

默认情况下,我的WCF服务或Windows服务项目中没有AssemblyInfo.cs – 2013-04-25 08:07:06

+1

是的,AssemblyInfo.cs位于解决方案资源管理器中的属性节点下。 Visual Studio默认在每个项目中创建该文件。 这应该只包含在您的代码的入口点的项目中,在这种情况下,WCF服务和Win服务 – Oscar 2013-04-25 08:12:30