5

Windows サービスの基本的なログ記録を使用しようとしています。

log4netへの参照を追加しました。

AssemblyInfo.cs に以下を追加しました。

[assembly: log4net.Config.XmlConfigurator(Watch = true)]

App.config に以下を追加しました。

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
  <configSections>
    <section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler,log4net, Version=1.2.10.0, Culture=neutral, PublicKeyToken=1b44e1d426115821" requirePermission="false" />
  </configSections>

  <!-- Log4net Logging Setup -->
  <log4net>
    <appender name="RollingFileAppender" type="log4net.Appender.RollingFileAppender,log4net">
      <file value="c:\\CGSD\\log\\logfile.txt" />
      <appendToFile value="true" />
      <lockingModel type="log4net.Appender.FileAppender+MinimalLock" />
      <layout type="log4net.Layout.PatternLayout">
        <conversionPattern value="%date [%thread] %level %logger - %message%newline" />
      </layout>
      <filter type="log4net.Filter.LevelRangeFilter">
        <levelMin value="INFO" />
        <levelMax value="FATAL" />
      </filter>
    </appender>

    <root>
      <level value="ALL"/>
      <appender-ref ref="RollingFileAppender"/>
    </root>
  </log4net>
</configuration>

サービスに次のコードがあります。

    log4net.Config.XmlConfigurator.Configure();
    log4net.ILog log = log4net.LogManager.GetLogger(typeof(Program));

    log.Debug("test");

ファイルc:\CGSD\log\logfile.txtは作成されますが、何も書き込まれません。

私はこれを追跡するために一日中フォーラムを調べてきましたが、すでに投稿された解決策を見落としていたら、お詫び申し上げます.

4

2 に答える 2

4

フィルタ レベルは に設定されているように見え<levelMin value="INFO" />ますが、メッセージをテストしていlog.Debugます。構成を変更して<levelMin value="DEBUG" />、再試行してください。それでも解決しない場合は、他の構成の問題もある可能性があります。

于 2012-11-14T22:55:20.853 に答える
0

最小レベルが必要であり、レベル INFOでメッセージをログに記録しようとしていますDEBUG。ドキュメント (http://logging.apache.org/log4net/release/manual/introduction.html) でわかるように、 の優先度DEBUGが低いINFOため、メッセージは除外されます。

于 2012-11-14T22:56:54.813 に答える