2011-07-28 7 views
1

MonoでC#アプリケーションを開発していて、log4netを使用しようとしています。手動で設定をロードすると、ロガーはうまく動作しますが、私はよりエレガントなものを望みます。それが設定は、以下の(または類似の)を使用してアセンブリからロードすることができると述べてlog4netのドキュメントのLog4net構成をMonoのアセンブリからロードする

ライン:

[アセンブリ:log4net.Config.XmlConfigurator(ConfigFileExtensionは=「log4netの」、時計= true)]

設定ファイルがビルドディレクトリに移動され、その拡張子が付いていることを確認しました。また、AssemblyInfo.csがMonoDevelopで "Application Definition"とマークされていることを確認しました。なぜこれが動作していないのか分かりません。誰にもアイデアはありますか?

ところで、私は答えを見つけようとしている場所を全部探しました。私はまた、リソースから設定をロードしようとしたが、どちらもうまく動作しませんでした。

+0

.exeに基づいて名前が付けられた.log4netファイルですか?例えばmyapp.exe.log4net – TheNextman

+0

いいえ、そうでしょうか?私はそれのような例を見ましたが、何もそれは "あった"とは言いませんでした。私はそれがただの大会だと思った。 – Chad

+0

ちょうどキックのために試して、同じ結果:ログメッセージはありません。 – Chad

答えて

0

log4netで複数の設定ファイルを使用することは可能ですが、おかしなことです。ここでの説明を参照してください:log4net - configure using multiple configuration files

あなたの.exeとあなたの.dllの中にログを記録していますか?

1つの設定ファイルで行うことはできますか?

「設定属性を使用する場合、属性を読み取るにはlog4netを呼び出す必要があります。LogManager.GetLoggerを呼び出すだけで、呼び出し元アセンブリの属性が読み取られ、したがって、アプリケーションの起動時や、外部アセンブリがロードされて呼び出される前にできるだけ早くロギングコールを行うことが不可欠です。

簡単な例を試してみてください。

  • あなたがquesionに持ってAssemblyAttributeを置いていることを確認し、あなたの.exeの
  • のAssemblyInfo.csにあなたが電話をかけることを確認してくださいあなたの設定ファイルが名前exename.exe.log4net
  • であることを確認しますLogManager.GetLogger .DLLからコードを呼び出す前に.exeでできるだけ早く。
関連する問題