2017-07-17 118 views
0

我目前使用log4net和azure文件來存儲我的日誌,作品ace。使用log4net和azure文件appender設置日誌文件限制

我一直在搜索,並找不到任何配置,使記錄器創建文件不大於給定的KB大小。

這是我的配置有:

<rollingStyle value="Size" /> 
    <MaxSizeRollBackups value="10" /> 
    <MaximumFileSize value="10KB" /> 

    <AzureStorageConnectionString value="connectiondatahere" /> 
    <ShareName value="filelog" /> 
    <Path value="processor" /> 
    <File value="processor_{yyyy-MM-dd}.txt" /> 
    <layout type="log4net.Layout.PatternLayout"> 
    <ConversionPattern value="%date %-5level %logger %message%newline"/> 
    </layout> 
</appender> 
<root> 
    <level value="ALL" /> 
    <appender-ref ref="AzureFileAppender"/> 
</root> 

我試過這個配置,但沒有運氣的一些變化。

回答

0

在查看了log4net-appender-azurefilestorage的源代碼之後,我發現目前azure文件appender中不支持日誌文件大小限制。我建議你自己重寫azure文件appender並添加大小限制功能。

以下是執行此操作的步驟。

步驟1,將名爲MaximumFileSize的屬性添加到AzureFileAppender類。

public int MaximumFileSize { get; set; } 

第2步,在將日誌附加到文件時添加大小限制代碼。

protected override void Append(LoggingEvent loggingEvent) 
{ 
    Initialise(loggingEvent); 
    var buffer = Encoding.UTF8.GetBytes(RenderLoggingEvent(loggingEvent)); 

    if ((_file.Properties.Length + buffer.Length) > MaximumFileSize) 
    { 
     //do something if the file reach the max file size 
    } 
    else 
    { 
     _file.Resize(_file.Properties.Length + buffer.Length); 
     using (var fileStream = _file.OpenWrite(null)) 
     { 
      fileStream.Seek(buffer.Length * -1, SeekOrigin.End); 
      fileStream.Write(buffer, 0, buffer.Length); 
     } 
    } 
} 

第3步,之後,您可以將大小限制(每個字節)添加到配置文件。

<MaximumFileSize value="10240" /> 
+0

有沒有更新?如果您有關於此主題的更多問題,請隨時通知我。 – Amor

相關問題