2013-08-05 5 views
5

Ich habe diese Konfiguration verwendet, aber ein Datum wird immer zur aktuellen Datei hinzugefügt ('log.20130805.0.log').wie man den Namen der statischen Protokolldatei mit Composite-Roll-Backups konfiguriert

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

Das Ergebnis dieser Konfiguration ist:

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

Was ich mit staticLogFileName = true erhalten ist:

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

Was ich will, ist:

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

Antwort

0

Sie kann die folgende Funktion verwenden. Diese Funktion ruft zuerst die Dateiposition ab, die Sie in web.config festgelegt haben, und danach können Sie einen beliebigen Pfad hinzufügen! (Wie Datum oder Kunden oder ...)

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> 

Funktion:

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

und Ergebnis ist wie folgt: C:\t4\TestProject\Customer1\Saturday, August 31, 2013.log