log4net Azure Blob Appender

log4net Azure Blob Appender

将日志保存到 Azure Blob 存储时,是否可以每天创建不同的文件夹? 现在我正在使用这个配置,它工作正常

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

但是不行

我想要的是能够每天动态使用不同的文件夹:类似

目录名 = 2016-05-13

目录名 = 2016-05-12

目录名 = 2016-05-11

这是可以实现的吗?

谢谢

Here's the code 用于 GitHub 上的附加器。

这是从配置值映射的 DirectoryName class 属性:

   private string _directoryName;

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

以及实际为 blob 创建文件名的相关 Filename 方法:

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 只接受静态值。好在它是开源的...