3

重複の可能性:
WinForms アプリケーションで log4net DLL を参照する正しい方法

私の WinForms ソリューションには 2 つのプロジェクトがあります。1 つはプロジェクト固有のコード用、もう 1 つは再利用可能なコード用です。両方のプロジェクトから log4net.dll を参照しています。メイン ソリューション フォルダーの下の libs フォルダーに dll を保持し、両方のプロジェクトからこの DLL を参照しています。注: これはソリューション フォルダーではなく、物理フォルダーです。

両方のプロジェクトで読み取ることができる単一の xml ファイルで log4net 構成設定を指定したいと考えています。

  1. この xml ファイルはどこに保管すればよいですか?
  2. このxmlファイルから読み取るようにlog4net XmlConfiguratorを指す方法は?
  3. xml ファイルの名前とパスをハードコーディングしたくない場合、どのようなオプションがありますか?

  4. (オプションの質問) 完全修飾クラス名をロガー名として使用するという規則に従いたくないとします。むしろ、実行時に xml ファイルから各クラスのロガー名を読み取りたい (目的は、外部ファイルで親子ロガーの関係を分離し、後で決定することです)。次に、オプションは何ですか?

C#2.0を使用しています。

これらは多くの質問のように聞こえますが、ベテランの log4net 開発者にとっては簡単なはずです!

編集 1: app.config ファイル自体に log4net 構成を混在させたくありません。

ありがとう。

4

1 に答える 1

1

私は解決策を見つけたと思います。

  1. 私は現在、スタートアップ プロジェクトとしてマークされているプロジェクトのプロジェクト フォルダーに XML ファイルを保持しています。プロジェクトのファイル プロパティで、「出力ディレクトリにコピー」を「新しい場合はコピー」に設定しました。

  2. アセンブリ レベル属性を使用して、log4net XmlConfiguration をこの XML ファイルにポイントしています。

    [アセンブリ: log4net.Config.XmlConfigurator(ConfigFile="LogConfig.xml",Watch = true)]

  3. 現在、上記の属性にファイル名をハードコードしています。後でハードコーディングしたくない場合は、log4net.Config キーを app.config ファイルの appSettings セクションに挿入できます。

  4. xml ファイルから各クラスのロガー名を読み取りたい場合は、完全修飾クラス名ごとに適切なキーを app.config ファイルに挿入し、そこから読み取ることができます。

誰かが別のアイデアを持っている場合は、投稿してください。

于 2013-01-01T21:43:12.607 に答える