web-dev-qa-db-ja.com

NLog.configファイルに「\ bin \ debug \」ではなく(d:\ dev)からファイルをロードさせます

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

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

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

16

以下は、ExecutingAssemblyのフォルダーにあるNlog.configファイルを指すようにNlogの構成を変更した方法です。

string assemblyFolder = Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location);
NLog.LogManager.Configuration = new NLog.Config.XmlLoggingConfiguration(assemblyFolder + "\\NLog.config", true);
45

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

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

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

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

5
Xharze

見つけた

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

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

Assembly.GetExecutingAssembly().Location

例外をスローします。

2
camt

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

2
Jim Sowers

NLog.configでインクルードファイルを使用できます。 D:\DEVのNLog.configのみを含む単純なNLog.configがある。

例:

<nlog>
    <include file="D:\DEV\NLog.Config" />
</nlog>

App.configを使用して実行することもできます。例:

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
    <configSections>
        <section name="nlog" type="NLog.Config.ConfigSectionHandler, NLog"/>
    </configSections>
    <nlog>
        <include file="D:\DEV\NLog.Config" />
    </nlog>
</configuration>

参照: https://github.com/nlog/nlog/wiki/Configuration-file#include-files

0
Rolf Kristensen