Log4net 日志记录不适用于WCF服务

Log4net 日志记录不适用于WCF服务,log4net,Log4net,我有一个WCF服务层。有三个项目,, 利用项目(调试解决方案)、Windows服务项目和带有业务逻辑的类库(BL项目) 我已经为BL项目配置了log4net,如下所示 装配信息 // Configure log4net using the .config file [assembly: log4net.Config.XmlConfigurator(ConfigFile = "log4net.config", Watch = true)] log4net.config <?xml ver

我有一个WCF服务层。有三个项目,, 利用项目(调试解决方案)、Windows服务项目和带有业务逻辑的类库(BL项目)

我已经为BL项目配置了log4net,如下所示

装配信息

// Configure log4net using the .config file 
[assembly: log4net.Config.XmlConfigurator(ConfigFile = "log4net.config", Watch = true)]
log4net.config

<?xml version="1.0" encoding="utf-8" ?>
<log4netConfiguration>
  <configSections>
    <section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler, log4net" />
  </configSections>
  <appSettings>
    <add key="log4net.Config" value="log4net.config" />
  </appSettings>
  <log4net>   
    <appender name="RollingFileAppender" type="log4net.Appender.RollingFileAppender">
      <file type="log4net.Util.PatternString" value="C:\my_logs/my_service_logs/my_log_%date{ddMMyyyy}.log" />
      <appendToFile value="true" />      
      <rollingStyle value="Size" />
      <maxSizeRollBackups value="5" />
      <maximumFileSize value="30MB" />
      <datePattern value="yyyyMMdd" />
      <layout type="log4net.Layout.PatternLayout">
        <conversionPattern value="%4t %d{ABSOLUTE} %-5p %m%n"/>
        <!--<conversionPattern value="%date [%thread] %-5level %logger [%property{NDC}] – %message%newline" />-->
      </layout>
    </appender>   
    <root>
      <level value="INFO" />
      <appender-ref ref="RollingFileAppender" />
    </root>
  </log4net>
</log4netConfiguration>

当我运行Harnese项目时,日志记录工作非常好。Harnese项目调用wcf服务,该服务响应传入的请求和日志,不会出现任何问题

但是当我安装windows服务时,以及通过网站调用BL时,日志记录不起作用

未为线束项目或Windows服务项目配置日志记录

由于我一直在为不同的项目使用log4net,我确信我的配置是正确的

但是为什么它在Windows服务中运行时不进行日志记录呢?这是某种安全问题吗? 对于日志文件/文件夹,我将完全控制权授予所有用户。但它仍然不是日志记录。
请帮忙

如果没有更多的代码,就很难准确地指出问题所在,但我知道服务在这方面可能很棘手。您可能应该尝试调试您的服务(在代码中使用
System.Diagnostics.Debugger.Launch()
自动附加到它),并检查它的当前目录。

说明:

因此,如果使用配置属性,则必须调用log4net 允许它读取属性。一个简单的电话 LogManager.GetLogger将导致调用程序集上的属性 被读取和处理因此,必须进行日志记录 在应用程序启动期间尽早调用,以及 当然是在加载和调用任何外部程序集之前。

因此,您需要将程序集属性移动到Windows服务中,并向
Main
方法中添加类似的内容:

 LogManager.GetLogger("This call initialises the logging system from the current assembly attributes");