2009-12-21 67 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