Log4Netに実装されているいくつかのパターン(http://logging.apache.org/log4net/release/features.html)
階層型ロギングアーキテクチャ
階層型ロギングは、コンポーネントベースの開発に最適です。各コンポーネントには独自のロガーがあります。個別にテストする場合、これらのロガーのプロパティは、開発者の要求に応じて設定できます。他のコンポーネントと組み合わせると、ロガーはコンポーネントのインテグレーターによって決定されたプロパティを継承します。他のコンポーネントに影響を与えることなく、1つのコンポーネントのロギングの優先順位を選択的に上げることができます。これは、他のコンポーネントからのメッセージでトレースファイルを混雑させることなく、単一のコンポーネントからの詳細なトレースが必要な場合に役立ちます。これはすべて、構成ファイルを介して実行できます。コードを変更する必要はありません。
ロギングコンテキスト
log4netは、ロギングの時点で開発者に透過的な方法でロギングコンテキストデータを収集するために使用できます。GlobalContextとThreadContextを使用すると、アプリケーションはロギングメッセージに添付されたコンテキストデータを保存できます。たとえば、Webサービスでは、呼び出し元が認証されると、呼び出し元のユーザー名をThreadContextプロパティに格納できます。このプロパティは、同じスレッドから作成された後続の各ログメッセージの一部として自動的にログに記録されます。