2011-01-27 26 views
3

ログ用にlog4netを使用するWindows C#アプリケーションがあります。これは、ロガーが設定されている方法です。時々、時には、ファイルがロールオーバーされていないいないrollingstyleが日付に設定されていると、log4netがログファイルをロールオーバーしないことがあります

<log4net> 
    <appender name="DebugFileAppender" type="log4net.Appender.RollingFileAppender"> 
     <file value="Local\logs\ApplnTrace.log" /> 
     <threshold value="INFO" /> 
     <appendToFile value="true" /> 
     <rollingStyle value="Date" /> 
     <datePattern value="yyyyMMdd" /> 
     <layout type="log4net.Layout.PatternLayout"> 
     <param name="ConversionPattern" value="%d [%5p] - (%file:%line) %m%n" /> 
     </layout> 
    </appender> 
    <appender name="MSGFileAppender" type="log4net.Appender.RollingFileAppender"> 
     <file value=".\local\logs\MsgTrace.log" /> 
     <threshold value="INFO" /> 
     <appendToFile value="true" /> 
     <rollingStyle value="Date" /> 
     <datePattern value="yyyyMMdd" /> 
     <layout type="log4net.Layout.PatternLayout"> 
     <param name="ConversionPattern" value="%d %n%m%n" /> 
     </layout> 
    </appender> 
    <logger name="ApplnLogger"> 
     <appender-ref ref="DebugFileAppender" /> 
    </logger> 
    <logger name="MsgLogger"> 
     <appender-ref ref="MSGFileAppender" /> 
    </logger> 
</log4net> 

ファイルは日付に基づいてロールオーバーされている場合、ログも停止します。なぜ誰かが私を助けることができますか?

答えて

2

ソースがないと、それを伝えるのは難しいです。アプリケーションの動作も停止しますか?はいの場合は、アプリケーションで致命的な欠陥を見つけます。

ない場合は、log4netのJIRAから判断すると、RollingFileAppenderの問題の多くは、(:log4net JIRAを参照してください):あります

"RollingFileAppender stops logging intermittently when it tries to roll over the log file"

"RollingFileAppender with rollingStyle="Date" and maximumFileSize both are not working Simultaneously."

多分それはあなたを傷つけていますこれらの問題の一つです。

4

log4Netは静かに失敗するように設計されています。物事がうまく動作しなくなると、通常は問題があります(ほとんどの場合、設定問題またはファイルシステムのセキュリティ問題です)。

内部log4netデバッグを有効にするとよいでしょう。パークあなたのApp.configファイルの<appSettings>要素で、このキー:

<?xml version="1.0" encoding="utf-8" ?> 
<configuration> 
    <appSettings> 
    <add key="log4net.Internal.Debug" value="true"/> 
    </appSettings> 
</configuration> 

は、あなたのアプリケーションを起動します。 Log4netはデバッグ情報の束を吐き出します。それはSystem.ConsoleとSystem.Diagnostics.Traceシステムに書き込まれます。接続されたデバッガからトレースメッセージをキャッチしたり、app.configファイルにトレースリスナを追加したりすることができます。トレースリスナーは、ファイルへの書き込みを行う場合は、あなたのプロセスが書き込みアクセス権を持っていることを確認してください、そうでなければ、何も見えないよ:あなたがWindowsイベントに書き込むものも含め、ここまで配線することができnumber of different trace listenersがあり

<configuration> 
... 
    <system.diagnostics> 
    <trace autoflush="true"> 
     <listeners> 
     <add 
      name="textWriterTraceListener" 
      type="System.Diagnostics.TextWriterTraceListener" 
      initializeData="C:\tmp\log4net.txt" 
      /> 
     </listeners> 
    </trace> 
    </system.diagnostics> 
... 
</configuration> 

をシステム。ここ

より:この回答のため

+0

本当にありがとうございましたが、それは大いに助けてくれました。私はmaximumFileSizeの100KBの代わりに100Kを指定していましたが、log4netは黙って失敗し、ログを正しくローリングしていませんでした(KBではなくKを使用するか、パラメータを拒否します)。上のトレースのヒントは、これをデバッグするのに役立ちました。本当に助けてくれてありがとう! – dcp