2009-11-04 12 views
5

VSユニットテストの実行中にログファイル(Log.Trace/Log.Debug)にいくつかのエントリを記録しようとしています。また、クラスの上にDeploymentItem属性を介してNLog.configファイルをoutディレクトリにコピーしました。それでも私のログファイルは作成されません。通常のWebアプリケーションの場合と同じように、ファイルにエントリを記録する方法についてのヘルプ。VS 2008ユニットテストのNLog

答えて

11

私はこの問題の解決策を見つけた: 次の内容のyoutはユニットテストプロジェクトにApp.configファイルを追加します。

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

    <nlog xmlns="http://www.nlog-project.org/schemas/NLog.xsd" 
     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> 

    <targets> 
     <target name="debugLog" xsi:type="Console" /> 
    </targets> 

    <rules> 
     <logger name="*" minlevel="Debug" writeTo="debugLog"></logger> 
    </rules> 

    </nlog> 

</configuration> 

あなたはNLogのように希望任意の構成を置いてもよいです。設定ファイル。

0

残念ながら、それは当時の唯一のXMLソリューションです。しかし、ユニットテストだけではありません。 NLog.configは、どのコンソールアプリケーションでも動作しません。

デザインであるか見落としているのか分かりません。とにかく、NLog.configをApp.configセクションに移動すると、満足できる方法であるとは言えません。/

コードから直接nlogを設定する可能性があることに気づく価値があります。 。 設定ファイルを処理し、ターゲットを登録するなどのプロセス全体を記録するnlogデバッグオプションを見つけてうれしいです...

これをオンにするには、internalLogFile属性とinternalLogLevel属性をnlog要素に追加します。

<nlog xmlns="http://www.nlog-project.org/schemas/NLog.xsd" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" internalLogFile="C:/logs/nlog.txt" internalLogLevel="Debug"> 

またはコードから:

InternalLogger.LogFile = @"c:\logs\nlog.txt"; 

    InternalLogger.LogLevel = LogLevel.Trace;