3

非常に少数の顧客 (50 人未満) しかおらず、サーバー側のすべてのログ情報が入る独自のログ ファイルを各顧客に持たせたいと考えています。NDC とフィルターを使用して、Log4j の標準アペンダーを使用してログ ステートメントを別のファイルに送信できることはわかっていますが、それには (既存のすべての顧客のロガーを作成するために) かなり多くのセットアップが必要であり、システムへの新しい顧客。

Log4j NDC 値に基づいて、ログ ステートメントを個別のファイルに分割するアペンダーを見たことがありますか? それを行うために新しいアペンダーを作成できると思いますが、うまく機能するものを既に作成できる場合は、そうしたいとは言えません。

4

4 に答える 4

5

logback(log4jの後継)に同梱されているSiftingAppenderは、この状況を処理するように正確に設計されています。

その名前が示すように、aSiftingAppenderを使用して、特定のランタイム属性に従ってロギングを分離(またはふるいにかける)することができます。たとえば、SiftingAppenderユーザーセッションに応じてログイベントを分離できるため、すべてのユーザーによって生成されたログは、ユーザーごとに1つのログファイルとして個別のログファイルに記録されます。たとえば、SiftingAppenderログイベントをユーザーごとに1つのファイルとして個別のログファイルに分割できます。

SiftingAppenderのドキュメントには、ユーザーIDに基づいてログを分離するための例が含まれています。

于 2009-05-29T13:31:51.947 に答える
1

ファイル名の一部を指定し、残りをNDCで埋める、マルチファイルアペンダーのようなものが必要なようです。私はこのようなことを知りません。おそらくあなたはあなた自身を転がさなければならないでしょう。

自分でロールする場合は、動的に作成されたのAppenderを内部的に使用するを作成することをお勧めします。ただし、アペンダーがNDCにアクセスできるかどうかはわかりません。これはおそらく重要な作業です。MapRollingFileAppender

于 2009-05-08T17:27:38.157 に答える
1

私はそのようなappenderにも会ったことがありませんが、自分で書くことは大したことではないと思います. 自分でやりたい場合は、AppenderSkeletonを見てください。最低限必要なことは、append(..) メソッドをオーバーライドすることです。アペンダーが呼び出されると、NDC を含む必要なものすべてを含む完全に形成されたイベントが取得されます。その後、好きなことをしてください..あなたの場合、MDC(マップされた診断コンテキスト)が実行可能な代替手段であると思います。より柔軟なIMHOです。

商用ソリューションを探している場合は、logFacesを見てください。これは、同様の状況を処理するために設計されています。開示: 私はこの製品の作者です。

于 2009-05-08T21:23:14.750 に答える