2009-12-21 73 views
0

我有以下log4net的配置:log4net的滾動文件Appender的滾動發行

<appender name="RollingFileAppender" type="log4net.Appender.RollingFileAppender"> 
    <file type="log4net.Util.PatternString" value="Logs/%date{yyyy-MM-dd} Service.log" />   
    <lockingModel type="log4net.Appender.FileAppender+MinimalLock" /> 
    <rollingStyle value="Date"/> 
    <datePattern value="yyyy-MM-dd"/> 
    <maxSizeRollBackups value="100"/> 
    <maximumFileSize value="15MB"/> 
    <layout type="log4net.Layout.PatternLayout"> 
     <conversionPattern value="%date %-5level %logger: %message%newline" /> 
    </layout> 
</appender> 

數據將被不斷記錄到日誌文件並回滾OK,但我最終推出的文件是這樣的:

2009-12-21 Service.log2009-12-22 (this is what it will write tonight) 
2009-12-21 Service.log <-- this being the latest file 
2009-12-21 Service.log2009-12-21 <-- last updated 23:59 

我想要的文件,如:

2009-12-21 Service.log 
2009-12-22 Service.log 
2009-12-23 Service.log 
+2

我不跟隨..你想防止什麼? – 2009-12-21 23:32:37

+0

Mauricio我想阻止它寫這樣的日誌文件2009-12-21 Service.log2009-12-21它應該是2009-12-21 Service.log 2009-12-22 Service.log 2009-12-23 Service.log – 2009-12-22 01:04:37

回答

0

我認爲下面應該是你所需要的。

在您的< appender/>中添加以下元素。

<staticLogFileName value="true" /> 
+0

對不起,我仍然遇到同樣的問題 – Gaven 2009-12-22 04:17:39

1

擺脫的文件名和文件元素類型:

<file value="Logs\" />

您datePattern然後換(注:請確保你逃脫「服務」的適當的字母,就像在「登陸」的g是一個特殊的格式,所以你需要用「\」逃吧):

<datePattern value="yyyy-MM-dd Service.lo\g"/> 
0

您可以使用下面的功能。 在這個函數中首先獲取您在webconfig中設置的文件位置,之後您可以添加任何你想要的路徑! (如日期,我們的客戶,或......)

WebConfig:

<appender name="RollingLogFileAppender" type="log4net.Appender.RollingFileAppender"> 
     <file value="C:\\t4\\"/> 
     <appendToFile value="true"/> 
     <rollingStyle value="Composite"/> 
     <datePattern value="_yyyy-MM-dd.lo'g'"/> 
     <maxSizeRollBackups value="10"/> 
     <maximumFileSize value="1MB"/> 
     <layout type="log4net.Layout.PatternLayout"> 
     <conversionPattern value="%date User:%identity IP:%X{addr} Browser: %X{browser} Url: %X{url} [%thread] %-5level %c:%m%n"/> 
     </layout> 
</appender> 

功能:

public static void ChangeFileLocation(string _CustomerName,string _Project) 
{ 
    XmlConfigurator.Configure(); 
    log4net.Repository.Hierarchy.Hierarchy h = (log4net.Repository.Hierarchy.Hierarchy)LogManager.GetRepository();   

    foreach (IAppender a in h.Root.Appenders) 
    { 
     if (a is FileAppender) 
     { 
      FileAppender fa = (FileAppender)a; 
      string sNowDate= DateTime.Now.ToLongDateString(); 
      // Programmatically set this to the desired location here 
      string FileLocationinWebConfig = fa.File; 
      string logFileLocation = FileLocationinWebConfig + _Project + "\\" + _CustomerName + "\\" + sNowDate + ".log"; 

      fa.File = logFileLocation; 
      fa.ActivateOptions(); 
      break; 
     } 
    } 
} 

,並導致這樣的:C:\Logs\TestProject\Customer1\Saturday, August 31, 2013.log