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年5月12日

的DirectoryName = 2016年5月11日

这是可以实现的?

感谢

+0

我还没有尝试过个人,但基于快速搜索(这例如:http://stackoverflow.com/questions/571876/best-way-to-dynamically-set- a-appender-file-path),你可以尝试类似''? –

+0

谢谢。我试过那个,不起作用: ) – Mihai

回答

4

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

这里的目录名类属性,从配置值映射:

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

所以看起来目录名只接受静态值。好东西它的开源...

+0

谢谢。我也看到了,但我希望能够做到这一点,而无需亲自修改代码:) – Mihai