2012-07-13 150 views
0

我有這個作爲我的配置文件:log4net的 - 任何日誌文件產生

<configuration> 
    <configSections> 
     <section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler,log4net" /> 
    </configSections> 

    <log4net> 
     <appender name="RollingFileAppender" type="log4net.Appender.RollingFileAppender"> 
      <file value="c:\\logging\\EwsSearch.log" /> 
      <lockingModel type="log4net.Appender.FileAppender+MinimalLock" /> 
      <appendToFile value="true" /> 
      <rollingStyle value="Size" /> 
      <maxSizeRollBackups value="-1" /> 
      <maximumFileSize value="100KB" /> 
      <staticLogFileName value="true" /> 
      <layout type="log4net.Layout.PatternLayout"> 
       <conversionPattern value="%date [%thread] %-5level %logger [%property{NDC}] - %message%newline" /> 
      </layout> 
     </appender> 
    </log4net> 

    <root> 
     <level value="ERROR" /> 
     <appender-ref ref="RollingFileAppender" /> 
    </root> 

</configuration> 

然後我在我的C#代碼:

public class VsiEWSSearch 
{ 
    private static readonly ILog logger = LogManager.GetLogger(typeof(VsiEWSSearch)); 

    public EWSResponse PdeProcessInquiry(int BusinessLineCode, int ClientCaseId, string callingApp) 
    { 
     XmlConfigurator.Configure(new System.IO.FileInfo("VSI.EWSSearch.config")); 

     logger.Error("This is an error"); 

任何日誌文件產生,即使我已經調整權限爲目錄。怎麼了?

+0

我在運行WCF服務的框架下運行。它正在記錄到其日誌目錄文件。它似乎仍然像配置文件被忽略 – 2012-07-13 20:56:44

回答

1

root節點必須位於log4net節點內。根據配置的不同的文件類型,你需要做一些進一步的調整:

  • 如果你有log4net的一個獨立的配置文件,那麼你需要刪除configurationconfigSections節點。我也認爲log4net是不會找到你的配置文件,除非你指定完整的路徑(當然,你可以做到這一點,而不需要在應用程序中硬編碼任何路徑)。

  • 如果你只是使用app.config,那麼你不需要進一步的修改,但你需要調用XmlConfigurator.Configure()方法沒有任何參數。

注意:您應該只在應用程序中調用XmlConfigurator.Configure()方法一次。

+0

我根據當地的專家改變了一些代碼:private static ILog logger = null; public EWSResponse PdeProcessInquiry(int BusinessLineCode,int ClientCaseId,string callingApp){XmlConfigurator.Configure(new System.IO.FileInfo(「VSI.EWSSearch.config」)); logger = LogManager.GetLogger(typeof(VsiEWSSearch));我也把根放在log4net節點裏面,我拿出了config節點。我如何取出配置節點?一切都在裏面? – 2012-07-16 19:41:59

+0

當我在本地運行服務和客戶端時,日誌記錄正在工作。它正在登錄到框架的日誌文件。問題是當我從另一臺機器(這恰好是一臺虛擬機)運行客戶機(這是一臺VB6)客戶機時,記錄不起作用。有任何想法嗎? – 2012-07-16 20:33:51

+0

我經常忘記XmlConfigurator,它會導致記錄器失敗而沒有錯誤或異常。您可以在使用記錄器的類文件中使用以下屬性來調用配置器:'[assembly:XmlConfigurator(Watch = true)]' – Jan 2013-11-01 09:17:07