5

私はアプリケーションを作成し、Ninjectを使用して、Nlogロガーの作成に使用できるLoggingファクトリのインスタンスを作成しています。NlogLoggerクラスをラップする独自のLoggerクラスがあります

インジェクションを処理するIOCプロジェクトと、LoggerFactoryクラスとLoggerクラスをホストするLoggingプロジェクトがあります。

これが必要な理由は、各プロジェクトにNlog dllと構成を個別に含めるのではなく、1つのログ構成を他のすべてのプロジェクトで共有するためです。

すべて正常にビルドおよび実行されますが、LoggerFactoryがロガーを作成するようになると

public ILogger GetLogger<T>()
{
    NLog.Logger nLogLogger = NLog.LogManager.GetLogger(typeof(T).ToString());

    return new Logging.Logger(nLogLogger);
}

構成はnullであり、NLog.dllがNLog.configファイルを検出していないことを示しています。

NLog.LogManager.Configuration 

私は指示に従い、NLog.configにNLog.dll.nlogという名前を付けてbinディレクトリにコピーすると言いましたが、NLog.dllと一緒に表示されます。

Nlogのドキュメントから、これで十分であると思われますhttp://nlog-project.org/wiki/Configuration_fileですが、検出されていません。「NLog.dllが置かれているディレクトリのNLog.dll.nlog」

NLog.dll.nlogファイルをcontentとしてマークし、copyToLocalをtrueとしてマークしています。

助けてくれてありがとうニール

4

1 に答える 1

9

私は今朝これをうまく動かすことができました

ロギングを使用する実行中のプロジェクトは、MVCアプリとWEBAPIアプリの2つです。問題は、ソリューションの構築中にNLog.configファイルがアプリのBINフォルダーにコピーされていたことでした。構成ファイルは、web.configファイルと一緒にプロジェクトのルートにある必要があります。

これを回避するために、Loggingプロジェクトでビルド後のイベントを作成し、構成ファイルをMVCアプリとWEBAPIアプリのプロジェクトルートにコピーしました。

ロギングが正常に機能するようになりました。

于 2012-05-30T09:51:13.070 に答える