2013-03-21 36 views
3

我正在嘗試在我的日誌文件名中包含進程ID信息,以便每次重新啓動應用程序時都會創建一個新的日誌文件。我從兩個項目登錄到同一個文件。這是我的配置。進程ID未進入log4net日誌文件名

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

    <log4net> 
     <appender name="NewLogForEveryRun" type="log4net.Appender.RollingFileAppender"> 
      <file value="c:\\testLogs\\TwoProjects-[%processid].txt" /> 
      <layout type="log4net.Layout.PatternLayout"> 
       <conversionPattern value="%d [%t] %-5p %c - %m%n" /> 
      </layout> 
     </appender> 

     <logger name="ClassLibrary1"> 
      <level value="ERROR" /> 
      <maximumFileSize value="256KB" /> 
      <param name="Threshold" value="ERROR"/> 
      <appender-ref ref="NewLogForEveryRun" /> 
     </logger> 

     <logger name="ClassLibrary2"> 
      <level value="ERROR" /> 
      <maximumFileSize value="256KB" /> 
      <param name="Threshold" value="ERROR"/> 
      <appender-ref ref="NewLogForEveryRun" /> 
     </logger> 
    </log4net> 
</configuration> 

我提到%processid得到的日誌文件名的進程ID信息,但應用程序運行時,它會創建日誌文件名稱爲TwoProjects-[%processid].txt。實際的進程ID不顯示在文件名中。這可能是什麼原因?

回答

10

默認情況下,您的文件值不會被分析或處理,除非您指定說它包含模式。

解決方案是將線

<file value="c:\\testLogs\\TwoProjects-[%processid].txt" /> 

改變

<file type="log4net.Util.PatternString" value="c:\\testLogs\\TwoProjects-[%processid].txt" /> 
+0

沒有運氣。我的日誌文件名仍然是「TwoProjects - [%processid] .txt」。 – Sandeep 2013-03-21 10:21:23

+0

奇怪。我只是測試它,我得到了TwoProjects- [12256] .txt – sgmoore 2013-03-21 10:57:46

+0

已解決!我正在使用造成問題的舊版本的log4net dll。 – Sandeep 2013-03-25 08:17:18