2011-09-13 37 views
2

对于用C#4编写的Windows服务,我配置了log4net并且在开发中正常工作。但不在生产中。log4net日志文件在生产中为空,不在开发中

这里是我的配置:

<?xml version="1.0" encoding="utf-8" ?> 
<configuration> 
    <configSections> 
     <section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler, log4net" /> 
    </configSections> 

    <log4net> 
     <appender name="FileAppender" type="log4net.Appender.RollingFileAppender"> 
      <file value="Logs/Log.xml"/> 
      <appendToFile value="true"/> 
      <rollingStyle value="Size"/> 
      <maxSizeRollBackups value="10"/> 
      <maximumFileSize value="100MB"/> 
      <layout type="log4net.Layout.XmlLayout"> 
       <param name="Prefix" value=""/> 
      </layout> 
     </appender> 

     <root> 
      <level value="ALL"/> 
      <appender-ref ref="FileAppender"/> 
     </root> 
    </log4net> 
</configuration> 

在我的AssemblyInfo.cs我:

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

当我在本地运行的应用程序,如预期的东西被写入日志。当我在服务器上运行它时,日志文件被创建在正确的路径但它仍然是空的。没有一个字符被写入日志。

显然,我的配置正在被拾取,因为该文件位于正确的位置并具有适当的扩展名。

+2

我会建议他们启用内部调试,这意味着如果log4net的失败,你应该明白为什么 - 详见http://logging.apache.org/log4net/release/faq.html #internalDebug – sgmoore

+0

您是否找到解决方案? A有同样的问题 –

+1

排序,我从程序集中删除了'[assembly:log4net.Config.XmlConfigurator(Watch = true)]'行,并在应用程序启动时在代码中完成。 –

回答

0

这是一个愚蠢的问题......但你确定你的服务已经正确地开始并且正在做什么吗?

我想补充控制台附加目的地,也许是eventlong附加器也是如此,并尝试运行您的服务作为一个控制台应用程序,如果可能的话,去看看?

我会说,由于日志文件正在创建,事情看起来很好log4net ...?

1

作为一种变通方法,我删除从组装的[assembly: log4net.Config.XmlConfigurator(Watch = true)]线,只是做了它在应用程序启动代码。

0

我有同样的问题,修好了,[装配:log4net.Config.XmlConfigurator(手表= TRUE)]在ninjectwebcommon文件,而不是程序集信息。之后我感动,到集信息就开始工作