3

ログに log4net を使用する Windows C# アプリケーションがあります。ロガーの構成方法は次のとおりです。

 <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>

ファイルは日付に基づいてロールオーバーされる場合とされない場合があり、ファイルがロールオーバーされない場合、ロギングも停止します。誰かが理由を見つけるのを手伝ってくれますか?

4

2 に答える 2

4

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

内部log4netデバッグを有効にしてみてください。<appSettings>app.configの要素にこのキーをパークします。

<?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ファイルにトレースリスナーを追加することにより、トレースメッセージをキャッチできます。トレースリスナーがファイルに書き込む場合は、プロセスに書き込みアクセス権があることを確認してください。そうでない場合は、何も表示されません。

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

Windowsイベントシステムに書き込むものを含め、ここに接続できるさまざまなトレースリスナーがあります。

詳細はこちら:

于 2011-01-27T18:13:57.777 に答える
2

ソースがないとわかりにくいです。アプリケーションも動作しなくなりますか? はいの場合は、アプリケーションの致命的な欠陥を見つけてください。

そうでない場合、log4net JIRA から判断すると、RollingFileAppender( log4net JIRAを参照)には多くの問題があります。

「RollingFileAppender は、ログ ファイルをロールオーバーしようとすると断続的にログを停止します」

「rollingStyle="Date" の RollingFileAppender と maximumFileSize の両方が同時に機能していません。」

たぶん、それはあなたを傷つけている問題の 1 つです。

于 2011-01-27T17:49:40.547 に答える