2009-12-21 5 views
0

je la config log4net suivante:Log4Net roulant fichier Appender problème de roulement

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

Les données seront enregistrées en permanence dans le fichier journal et roule OK, mais je finis par avoir des fichiers roulés comme celui-ci:

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 

Je veux que les fichiers soient comme:

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

Je ne suis pas .. qu'est-ce que tu veux empêcher? –

+0

Mauricio Je veux l'empêcher d'écrire les fichiers journaux comme ceci 2009-12-21 Service.log2009-12-21 il devrait être 2009-12-21 Service.log 2009-12-22 Service.log 2009-12-23 Service.log –

Répondre

0

Je pense que ce qui suit devrait être ce dont vous avez besoin. Ajoutez l'élément suivant dans votre < appender/>.

<staticLogFileName value="true" /> 
+0

Désolé, j'ai toujours le même problème – Gaven

1

Débarrassez-vous du nom de fichier et le type dans l'élément de fichier:

<file value="Logs\" />

Ensuite, changez votre datePattern à (note: assurez-vous échapper les lettres du mot « service » de façon appropriée, comme le g dans « log » est un format spécial, vous devez échapper à la « \ »):

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

vous pouvez utiliser la fonction ci-dessous. Dans cette fonction d'abord obtenir l'emplacement du fichier que vous définissez dans webconfig et après que vous pouvez ajouter n'importe quel chemin que vous voulez! (Comme la date, notre client, ou ...)

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> 

Fonction:

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

et le résultat comme celui-ci: C:\Logs\TestProject\Customer1\Saturday, August 31, 2013.log

Questions connexes