2011-09-13 38 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文件,而不是程序集信息。之後我感動,到集信息就開始工作