2

どういうわけか、古いログファイルがMaxFileSizeを超えたときに、log4netが新しいファイルにローリングせず、すでに超えたログ情報へのログ情報の書き込みも停止します。しかし、サーバーを再起動すると、古いサーバーの名前がServerLog.txt.1に変更され、新しいファイルServerLog.txtが作成され、そのファイルに書き込まれました。

これが私のlog4net.xmlファイルです:

<?xml version="1.0" encoding="utf-8"?>
<log4net debug="true">
  <appender name="RollingLogFileAppender" type="log4net.Appender.RollingFileAppender">
    <file value="Logs\ServerLog.txt" />
    <appendToFile value="true" />
    <rollingStyle value="Size" />
    <maxSizeRollBackups value="10" />
    <maximumFileSize value="5MB" />
    <staticLogFileName value="true" />
    <layout type="log4net.Layout.PatternLayout">
      <conversionPattern value="%-5p %d %5rms %-22.22c{1} %-18.18M - %m%n" />
    </layout>
  </appender>

  <root>
    <level value="DEBUG" />
    <appender-ref ref="RollingLogFileAppender" />
  </root>
</log4net>

誰か助けてくれませんか?ありがとう。

4

4 に答える 4

2

IIS のログを使用すると問題が発生する可能性があります。異なるアプリ ドメインが IIS 内からログ ファイルにアクセスする可能性があるため、ログ ファイルが別のアプリ ドメインでも開かれているため、アプリ ドメインがファイルをロールできないという問題が発生する可能性があります。

ファイルにアクセスするときにアプリ ドメインが衝突しないようにするには、アペンダーでロック モデルをセットアップする必要があります。

次のようなことができるはずです。

<?xml version="1.0" encoding="utf-8"?>
<log4net debug="true">
  <appender name="RollingLogFileAppender" type="log4net.Appender.RollingFileAppender">
    <file value="Logs\ServerLog.txt" />
    <appendToFile value="true" />
    <rollingStyle value="Size" />
    <maxSizeRollBackups value="10" />
    <maximumFileSize value="5MB" />
    <staticLogFileName value="true" />
    <layout type="log4net.Layout.PatternLayout">
      <conversionPattern value="%-5p %d %5rms %-22.22c{1} %-18.18M - %m%n" />
    </layout>
    <lockingModel type="log4net.Appender.FileAppender+MutexLock" />
  </appender>

  <root>
    <level value="DEBUG" />
    <appender-ref ref="RollingLogFileAppender" />
  </root>
</log4net>
于 2010-12-16T20:29:58.400 に答える
1

appendToFile 値を false に設定してみてください。http://logging.apache.org/log4net/release/sdk/log4net.Appender.RollingFileAppender.RollingStyle.htmlを参照してください。

于 2010-12-16T22:17:26.210 に答える
0

'staticLogFileName'を削除してみます。私たちはあなたとほとんど同じ設定を使用します。ただし、staticLogFileNameプロパティは指定しません。(これは暗闇の中でのショットです。staticLogFileNameをtrueに設定しても問題ないためです)

于 2010-12-16T22:31:32.453 に答える