1

Wenn Sie Protokolle in Azure Blob Storage speichern, gibt es eine Möglichkeit, einen anderen Ordner pro Tag zu erstellen? Im Moment bin ich mit dieser Konfiguration und es funktioniert gutlog4net Azure Blob Appender

<appender name="AzureAppender2" type="log4net.Appender.AzureBlobAppender, log4net.Appender.Azure"> 
    <param name="ContainerName" value="testcon" /> 
    <param name="DirectoryName" value="myfolder/logs.txt" /> 
    <param name="ConnectionString" value="DefaultEndpointsProtocol=https;AccountName=testcon;AccountKey="rftgdfgdfgfdg78=="/> 
    <layout type="log4net.Layout.PatternLayout"> 
      <conversionPattern value="%date [%thread] %-5level %logger [%property{NDC}] - %message%newline" /> 
     </layout> 
</appender> 

ich bereits in diesem

<param name="DirectoryName" value=%date/" /> 

habe versucht, aber es funktioniert nicht

Was ich will, ist zu sein in der Lage, verschiedene Ordner pro Tag dynamisch zu verwenden: so etwas wie

DirectoryName = 2016-05-13

Verzeichnisname = 2016-05-12

Verzeichnisname = 2016-05-11

Ist das erreichbar?

Dank

+0

Ich habe es nicht persönlich versucht, aber basierend auf einer schnellen Suche (das zum Beispiel: http://Stackoverflow.com/questions/571876/best-way-to-dynamically-set- An-Appender-Datei-Pfad), können Sie versuchen, etwas wie ' '? –

+0

Danke. Ich habe das versucht, funktioniert nicht:) – Mihai

Antwort

4

Here's the code für die appender auf GitHub.

Hier ist die Verzeichnisname Klasse Eigenschaft, die von dem Konfigurationswert abbildet:

private string _directoryName; 

    public string DirectoryName 
    { 
     get 
     { 
      if (String.IsNullOrEmpty(_directoryName)) 
       throw new ApplicationException(Resources.DirectoryNameNotSpecified); 
      return _directoryName; 
     } 
     set 
     { 
      _directoryName = value; 
     } 
    } 

und die relevanten Dateinamen Methode, die die Dateinamen für das Blob tatsächlich erzeugt:

private static string Filename(LoggingEvent loggingEvent, string directoryName) 
     { 
      return string.Format("{0}/{1}.{2}.entry.log.xml", 
           directoryName, 
           loggingEvent.TimeStamp.ToString("yyyy_MM_dd_HH_mm_ss_fffffff", 
                   DateTimeFormatInfo.InvariantInfo), 
           Guid.NewGuid().ToString().ToLower()); 
     } 

So sieht es aus wie Verzeichnisname akzeptiert nur statische Werte. Gute Sache, es ist Open Source ...

+0

Danke, das habe ich auch gesehen, aber ich habe auf eine Möglichkeit gehofft, ohne den Code selbst ändern zu müssen :) – Mihai

Verwandte Themen