2017-07-17 6 views
0

私は現在log4netとazureファイルを使用してログを記録しています。log4netとazureファイルアペンダでログファイルの上限を設定する

私は検索していますが、ロガーが所定の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ファイルアペンダーでサポートされていないことがわかりました。 azureファイルappenderを自分で書き直してサイズ制限機能を追加することをお勧めします。

以下の手順を実行します。

ステップ1、AzureFileAppenderクラスにMaximumFileSizeという名前のプロパティを追加します。

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、その後、サイズ制限(1バイトあたり)を設定ファイルに追加できます。

<MaximumFileSize value="10240" /> 
+0

このトピックについてさらに問題がある場合は、お気軽にお知らせください。 – Amor

関連する問題