2009-03-13 7 views
29

私は今Log4netをしばらく使用しています。特にCastle.Windsorに接続すると、素晴らしいログ記録フレームワークです。しかし...Log4NetのLogFileAppenderの最大ファイルサイズ

私は通常、ローリングファイルアペンダーを使用していますが、これは実際に必要なログファイルが多すぎるため、最新のプロジェクトでは代わりに基本的なLogFileAppenderを使用していますが、問題はログファイルは(一見永遠に)成長し続けます。

<appender name="LogFileAppender" type="log4net.Appender.FileAppender"> 
    <file value="E:\Logs\iWater\Schedule-Dispatch-API.log"/> 
    <param name="AppendToFile" value="true"/> 
    <maximumFileSize value="2048KB"/> 
    <layout type="log4net.Layout.PatternLayout"> 
    <conversionPattern value="%-16date{dd MMM HH:mm:ss} %-7level %-25.35logger{1} %message%newline"/> 
    </layout> 
</appender> 

その?:私の現在の構成がどのように見えるか、私は固定サイズを越える(と古いログを削除して、ファイルに新しいものを追加起動しないようにアペンダを伝えることができ

maximumFileSize属性が尊重されていないような任意のソリューションは。そうです?また

、どのように私は(今まで)1ファイルを作成するには、ローリングファイルアペンダを設定することができますか?

答えて

55

FileAppenderクラスを使用するファイルロールオーバーの数を制限します。 RollingFileAppenderを使用する場合にのみ取得します。ここでは、ファイルを固定された最大サイズに制限し、バックアップなしでmaxSizeRollBackupsを0に設定する例を示します。 (基本的には既存のすべてのログを削除してやり直す)ファイルがその最大サイズに達したときに、それが切り捨てられていることに注意してください:

<appender name="RollingFileAppender" type="log4net.Appender.RollingFileAppender"> 
    <file value="log.txt" /> 
    <appendToFile value="true" /> 
    <rollingStyle value="Size" /> 
    <maxSizeRollBackups value="0" /> 
    <maximumFileSize value="10MB" /> 
    <staticLogFileName value="true" /> 
    <layout type="log4net.Layout.PatternLayout"> 
     <conversionPattern value="%date [%thread] %-5level %logger [%property{NDC}] - %message%newline" /> 
    </layout> 
</appender> 
+19

完全な切り捨てを避けるため、まだ_too多くのログfiles_の報告された問題を解決するために、私は設定をお勧めしますmaxSizeRollBackupsを低い数値に設定するそれに応じてmaximumFileSizeを適宜減らしてください(2の場合は3で割る)。このようにして、切り捨ての直後には、最新のログメッセージのうち2分の3が残っています。 –

2

LogFileAppenderは出力ファイルサイズの制限をサポートしていません(少なくとも私が見つけることができる参照)。ファイルサイズを制限するには、RollingFileAppenderを使用し、サイズをロールしてファイルサイズ制限を設定します。

はのMaxFileSize/MaximumFileSize性質を持っていない MaxSizeRollBackups属性

関連する問題