2013-08-05 19 views
5

Użyłem tej konfiguracji, ale data jest zawsze dodawana do bieżącego pliku ("log.20130805.0.log").jak skonfigurować statyczną nazwę pliku logu z kopiami nazywane lokalnie?

<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> 

Wynikiem tej konfiguracji jest:

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

Co mam z staticLogFileName = true to:

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

Co chcę jest:

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

Odpowiedz

0

Ty może skorzystać z poniższej funkcji. Ta funkcja najpierw pobiera lokalizację pliku ustawioną w pliku web.config, a następnie można dodać dowolną ścieżkę! (Jak data lub Klienta lub ...)

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> 

Funkcja:

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; 
     } 
    } 
} 

i wynik jest tak: C:\t4\TestProject\Customer1\Saturday, August 31, 2013.log