2013-08-05 22 views
5

我使用了此配置,但日期總是添加到當前文件('log.20130805.0.log')。如何使用複合命名的滾動備份來配置靜態日誌文件名

<appender name="LogFileAppender" type="log4net.Appender.RollingFileAppender"> 
    <file value="Logs/logFile.log" /> 
    <appendToFile value="true" /> 
    <preserveLogFileNameExtension value="true" /> 
    <rollingStyle value="Composite" /> 
    <datePattern value=".yyyyMMdd" /> 
    <maximumFileSize value="10MB" /> 
    <countDirection value="1"/> 
    <maxSizeRollBackups value="-1" /> 
    <staticLogFileName value="false" /> 
    <layout type="log4net.Layout.PatternLayout"> 
     <param name="ConversionPattern" value="%date [%thread] %-5level %logger - %message%newline" /> 
    </layout> 
</appender> 

該配置的結果是:

log.20130805.0.log 
log.20130805.1.log 
log.20130805.2.log 
log.20130805.3.log 

我能得到什麼用staticLogFileName =真:

log.log 
log.1.log 
log.2.log 
log.3.log 

我要的是:

log.log 
log.20130805.1.log 
log.20130805.2.log 
log.20130805.3.log 

回答

0

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

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:\t4\TestProject\Customer1\Saturday, August 31, 2013.log

相關問題