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