1

При сохранении журналов в хранилище Azure Blob существует ли способ создать другую папку в день? Сейчас я использую эту конфигурацию, и она отлично работаетlog4net 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> 

Я уже пробовал это

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

Но это не работает

То, что я хочу быть способный динамически использовать разные папки в день: что-то вроде

DirectoryName = 2016-05-13

DirectoryName = 2016-05-12

DirectoryName = 2016-05-11

Является ли это достижимо?

Благодаря

+0

Я не пробовал это лично, но на основе быстрого поиска (например, http://stackoverflow.com/questions/571876/best-way-to-dynamically-set- an-appender-file-path), вы можете попробовать что-то вроде ' '? –

+0

Спасибо. Я пробовал это, не работает:) – Mihai

ответ

4

Here's the code за Appender на GitHub.

Вот класс DirectoryName собственность, которая отображает от значения настройки:

private string _directoryName; 

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

, и соответствующего метода имени файла, который фактически создает имя файла для сгустка:

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

Так выглядит DirectoryName принимает только статические значения. Хорошо, что это с открытым исходным кодом ...

+0

Спасибо. Я тоже это видел, но я надеялся на способ сделать это, не меняя код самостоятельно :) – Mihai