12

.NET 3.5 コンソール アプリケーションで log4net を使用しており、生成したログ メッセージをコンソールの標準出力と RollingFileAppender の両方で表示したいと考えています。ファイル出力は魅力的に機能していますが、実行時にステータス メッセージのストリームがコンソールの標準出力に流れているのが見えます。すべてのステータス情報をスキップして、プログラムでログ ファイルに生成しているのと同じメッセージのみを表示したいと考えています。

アプリを実行した後の例を次に示します。

log4net: XmlHierarchyConfigurator: Configuration update mode [Merge].
log4net: XmlHierarchyConfigurator: Logger [root] Level string is [DEBUG].
log4net: XmlHierarchyConfigurator: Logger [root] level set to [name="DEBUG",value=30000].
log4net: XmlHierarchyConfigurator: Loading Appender [Console] type: [log4net.Appender.ConsoleAppender]
log4net: PatternParser: Converter [message] Option [] Format [min=-1,max=2147483647,leftAlign=False]

そして、ロガー オブジェクトのインスタンス化全体が記述されるまで続けます。

これをオフにするにはどうすればよいですか? できますか?あらゆる種類の構成ファイル設定を試しましたが、何も解決しません! うーん...

4

9 に答える 9

18

デバッグを設定 = false

<?xml version="1.0" encoding="utf-8" ?>
<configuration>

  <configSections>
    <section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler, log4net" />
  </configSections>

  <log4net debug="false">
    <appender name="RollingLogFileAppender" type="log4net.Appender.RollingFileAppender">
      <file value="your file name" />
      <appendToFile value="true" />
      <rollingStyle value="Size" />
      <maxSizeRollBackups value="10" />
      <maximumFileSize value="10MB" />
      <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>
</configuration>
于 2010-08-24T10:33:58.307 に答える
15

私はこの同じ問題を経験しました(当然のことながら、これが私がこの質問を見つけた方法です)。

とにかく、私の問題、そしておそらくあなたの問題も、「<log4net debug=true >」の web/app 構成ファイル設定が原因でした。あまりにも明白ですよね?app.config 設定のスケルトンを Web スニペットから貼り付け、アペンダーに注目して、ルートの log4net 要素を実際に見直すことはしませんでした。しかし、そこにあります。これは FAQ にありますが、この属性ではなく、他のことが私の目に留まりました。

于 2009-02-13T22:09:48.493 に答える
5

コードにこれがある場合:

log4net.Config.BasicConfigurator.Configure();

次のように変更します。

log4net.Config.XmlConfigurator.Configure();
于 2015-11-10T03:03:51.947 に答える
3

一度に 1 ステップずつ新しいプロジェクトを使用して問題を再現してみてください (最初に log4net をアペンダーなしで参照し、次にコンソール アペンダーを使用し、次に両方のアペンダーを使用して参照します)。同じ動作を示す場合は、log4net の完全な構成を投稿してください。

また、 log4net Config Examples ページの構成サンプルを使用してみてください。

編集:これがこれらのメッセージの原因である可能性があります: How do I enable log4net internal debugging .

于 2008-12-20T18:18:22.820 に答える
1

私はOPと同じ問題を抱えています。log4net.config で、debug = false に設定しました。また、PatternLayout が定義された単一の FileAppender セットもあります。log.Warn("test") を使用すると、予想されるフォーマットされた結果が予想される txt ファイルに書き込まれます。ただし、より詳細な文字列がコンソール (stdout) に書き込まれます。

編集:私の修正は、コード BasicConfigurator.Configure();でこの行を削除することでした。 コンソールと宣言された FileAppender の両方に書き込むように log4net に明示的に指示するものは何も設定に記載されていないことに注意してください。実際、log4net debug=false が宣言され、問題は解決しませんでした。log4net ホームページのサンプル コードは、不用意に BasicConfigurator.Configure() を呼び出します。私は log4net を使用していますが、このライブラリは多くの野心的なオープン ソース プロジェクトと同じ問題を抱えています。XML 駆動の長い構成が存在するため、実際にはより合理化されたインターフェイスを使用できるようにする必要があるタスクに対して、開発者に何千ものオプションを提供できます。プログラマーはお互いの時間を大切にする傾向がありません。私たちは「考えさせない」ルールをユーザー インターフェイスに適用しますが、マシン インターフェイスには適用しません。それは、優れたデザインに共通する基本原則を軽視しているようなものです。複雑さは開発者が利用できる必要があります。しかし、コア機能を達成するために数時間を無駄にするべきではありません。これを考慮すると、log4net は設計が不十分であると言えます。ほとんどのソフトウェアと同様に、複雑さのために多くの複雑さがあります。プロジェクトを指導する開発者がより才能があれば、ライブラリの最も一般的なユース ケース (アプリ フォルダー内のテキスト ファイルにログを記録するために参照し、それを使用する) は、事前の知識がなくても 5 ~ 10 分の公開で実装できます。インターフェイスの設計と構成の方法論が原因で、そうではありません。ほとんどのソフトウェア エンジニアの考え方を私が嫌いな理由を浮き彫りにします。彼らは、最も一般的なユースケースでシンプルさの指数関数的な価値を理解することができず、代わりに、インターフェイスをより不可解なものにすればするほど、他の開発者により多くの価値が追加されると思い込んでいます。彼らは自我と無知に駆り立てられています。

于 2015-08-04T19:13:21.737 に答える
1

log4net構成セクションがどのように見えるか、または少なくともどのように構成されているかを提供できますか? 私の推測では、 log4net の内部デバッグが構成されているという点で、この答えは正しいと思います。それか、プロジェクトにlog4netのソースがあり、独自のコードでコンパイルしています。これにより、構成が取得され、同じように実行されます。

于 2009-01-03T06:15:19.513 に答える
0

それは、ルートロガーレベルがDEBUGに設定されていることを示しています。構成ファイルまたはロギングの開始元のコードにアクセスできない場合は、ルートロガーのデフォルト値を暗黙的に使用していると思います。

  1. コマンドライン(stdout)に移動し、
  2. デフォルトではDEBUGです
于 2008-12-21T11:40:29.440 に答える
0

log4net faqをご覧ください。それらには、遭遇する可能性のある一般的な落とし穴がすべて含まれています。

于 2009-01-01T08:54:00.547 に答える