2017-07-17 120 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