2017-08-22 1 views
0

私はASP.Net Web API 2プロジェクトで作業しており、アプリケーションログをデータベースに書き込むようにnlogを設定しました。NLogはソリューション構成に応じて異なる設定ファイルを使用します

私たちは4つの環境(local、testing、staging、prod)を持っているので、私は別のデータベースにログを書き込む必要があります。

だから、私のweb.configファイルで私が持っている:

<?xml version="1.0" encoding="utf-8"?> 
<nlog xmlns="http://www.nlog-project.org/schemas/NLog.xsd" 
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> 
    <targets> 
    <target name="ExceptionLog" type="Database"> 
    <connectionString> 
     // DbConnectionString 
    </connectionString> 
    <commandText> 
     // INSERT COMMAND 
    </commandText> 
     // Parameters 
    </target> 

何が必要なの環境ごとに異なる接続文字列は次のとおりです。

<configSections> 
    <section name="nlog" type="NLog.Config.ConfigSectionHandler, NLog"/> 
</configSections> 
また

、 私はNlog.configファイルを持っています。または、おそらくNLog.Staging.config、NLog.Testing.configなどのようなファイルの束

お勧めします。

+0

なぜ設定セクション*と*別ファイルがありますか?ここには2つの設定ファイルNLog.Release.configとNLog.Debug.configがあり、名前の変更はビルドターゲットによって異なります。それは私たちの要件には十分です。私はもっ​​と洗練された方法があると思う。 – Fildor

+0

@Fildorというのは、単にソリューション構成(Nlog.Staging.configとNLog.Release.config)用のファイルを作成するだけで、うまくいくでしょうか? – SJMan

+0

構成ソースとしてNLog.configを使用するようにNLogを構成するとします。その後、NLog.Staging.config、NLog.Release.configなどを提供することができます。配布ターゲットに応じて、次のスクリプトファイルで簡単に実行できるNLog.configファイルに名前を変更する必要があります。展開ツールチェーンによって異なります。私の解決策では、構築後のステートメントを使用して、適切な設定をビルドターゲットに応じてbinフォルダにコピーして名前を変更します。 – Fildor

答えて

0

あなたの質問は基本的には一般的な設定ファイルです。 SlowCheetahをご覧ください。これは、任意の設定ファイルをVS設定に基づいて異なるレイアウトに変換するのに役立ちます。

現在、Visual Studio、デバッグ、ステージング、およびリリースの3つの構成があります。コンパイルする構成に応じて、SlowCheetahは、行またはセクション全体を変換することによって、Web.ConfigファイルとNLog.configファイルをその構成に変換します。

関連する問題