19

特定の DLL でログを記録するために Nlog を使用しました。その後、DLL は別のアプリケーションで使用されます (DLL は を使用して動的にロードされますSystem.Reflection.Assembly.LoadFrom(path + a.dll))。Nlog.dll および Nlog.config ファイルを Path フォルダーに手動で配置したところ、アプリケーションは正しく実行されますが、メッセージがログに記録されません。

ただし、Nlog.config ファイルをアプリケーション ディレクトリ ( \bin\debug\) に手動で配置すると、メッセージがログに記録されます。

Nlog.Config の検索場所をd:\dev以外の別のディレクトリ ()にポイントする方法を教えてください\bin\debug\

4

5 に答える 5

6

NLog wiki の構成ファイルの場所を参照してください。

基本的に、NLog が構成を見つける方法は次のとおりです。

  • 標準アプリケーション構成ファイル (通常は applicationname.exe.config)
  • アプリケーションのディレクトリにある applicationname.exe.nlog
  • アプリケーションのディレクトリにある NLog.config
  • NLog.dll があるディレクトリの NLog.dll.nlog (NLog が GAC にない場合のみ)
  • NLOG_GLOBAL_CONFIG_FILE 環境変数が指すファイル名 (定義されている場合、NLog 1.0 のみ - NLog 2.0 でサポートが削除されました)

これを行う他の方法はありません。

于 2013-04-12T08:05:27.237 に答える
2

NLog 構成は、動的に a.dll をプルするアプリが実行されているフォルダーに存在する必要があります。デバッグしている場合は、bin\debug に入れると機能するのはそのためです。Visual Studio を使用している場合は、nlog.config を「常にコピー」に設定してみてください。必要な場所に移動するはずです。

于 2013-04-11T20:36:48.523 に答える
2

見つけた

NLog.LogManager.Configuration = new NLog.Config.XmlLoggingConfiguration(logFilePath, true);

実際には、ロガーは設定ファイルではなく、ログに記録されるファイルを指します。これの優れた点は、ExecutingAssembly を知らなくてもログ ファイル パスを定義できることです。これは、XLL がアセンブリをビットストリームとして動的にロードするため、ExcelDNA などを使用する場合に特に便利です。

Assembly.GetExecutingAssembly().Location

例外をスローします。

于 2013-11-04T22:54:53.803 に答える