0

API への呼び出しを記録するために log4net を使用しています。多くの呼び出し。私が呼び出しているメソッドには、要求/応答のペアに対して数メガバイトのデータがあり、使用するロギング パターンに関係なく、同じファイルに複数の呼び出しが書き込まれたログを読み取るのは非常に困難です。したがって、複数のファイルにログを記録するのが最善の方法だと思います。

log4netでこれを行う方法、またはそれがサポートされているかどうかを理解するのに苦労しています。

Log4Net FAQ から -複数のクライアント リクエストの出力が異なるログ ファイルに出力されることはありますか?

多くの開発者は、同じクラスで異なるクライアント要求から発生したログ出力を区別するという問題に直面しています。彼らは、ログ出力をさまざまなファイルに展開するための巧妙なメカニズムを考え出しました。ほとんどの場合、これは正しいアプローチではありません。

コンテキスト プロパティまたはスタック (ThreadContext) を使用する方が簡単です。その後、ログ出力には自動的にコンテキスト データが含まれるため、同じファイルに出力された場合でも異なるクライアント リクエストからのログを区別できます。

Contexts と Context Properties に関するドキュメントを見ました。Event Context が最も適しているように見えましたが、他の Context のドキュメントも読んでみました。ログファイル名のコンポーネントではなく、ログファイルに追加のプロパティを配置したり、別のファイルに自動的に追加したりできるようになっているようです。

異なるコンテキスト プロパティやコンテキスト スタック レベルなどに対して異なるファイルを作成するようにアペンダーを構成する方法はありますか?

編集:

Castle Windsor Logging 機能を介して log4net を使用していますが、この問題を解決するために NLog に切り替えることを検討しています。

NLog は、ターゲットのプロパティ{logger}でレイアウト レンダラーを使用することにより、この動作をサポートしているようです。ウィンザーの方法で子ロガーを作成し、 を設定することで、このプロパティを効果的に設定できます。FilefileNameILogger.CreateChildLogger{logger.shortName=True}

見る:

http://nlog-project.org/forum#nabble-td1685989

私がテストしているプロジェクトでは log4net が使用されているため、できれば log4net を使用したいと思います。私のNLogの例は、log4netでこれを行う方法について誰かにインスピレーションを与えることができ、おそらく彼らは私がそれを理解するのを助けることができます:)

4

1 に答える 1

1

この記事はあなたに興味があるかもしれません: Log4Net:プログラムで複数のロガーを指定する(複数のファイルアペンダーを使用)

また、読みやすさだけが気になる場合は、ログ エントリをスレッド名で区切ることができるログ ファイル ビューアーがあるかもしれません。

もう 1 つの可能性は、スレッド名を含むエントリをデータベースに記録することです。これらのエントリは、SQL を使用して簡単にフィルタリングできます。

于 2011-04-28T01:53:27.877 に答える