2009-04-17 15 views
3

私はVS2008の内部からnHibernateアプリケーションに対してユニットテストを実行しており、ユニットテスト中にロギングをオンにしたいので、何が起こっているのかをもう少し見ることができます。私は、nhibernateの情報をユニットテストapp.configに正常に記録する別のアプリケーションのapp.configをコピーして貼り付けましたが、それでも出力は得られません。ここでユニットテスト中のnHibernate出力SQLログ

は、テストプロジェクトのための私のapp.configです:私はテストプロジェクトを実行すると

<log4net> 
    <appender name="NHibernateFileLog" type="log4net.Appender.RollingFileAppender"> 
     <file value="Logs/nhibernate.txt" /> 
     <appendToFile value="true" /> 
     <rollingStyle value="Size" /> 
     <maxSizeRollBackups value="10" /> 
     <maximumFileSize value="100KB" /> 
     <staticLogFileName value="true" /> 
     <layout type="log4net.Layout.PatternLayout"> 
     <conversionPattern value="%d{HH:mm:ss.fff} [%t] %-5p %c - %m%n" /> 
     </layout> 
    </appender> 

    <appender name="GeneralLog" type="log4net.Appender.RollingFileAppender"> 
     <file value="Logs/general.txt" /> 
     <appendToFile value="true" /> 
     <maximumFileSize value="100KB" /> 
     <rollingStyle value="Size" /> 
     <maxSizeRollBackups value="5" /> 
     <layout type="log4net.Layout.PatternLayout"> 
     <conversionPattern value="%d{HH:mm:ss.fff} [%t] %-5p %c - %m%n" /> 
     </layout> 
    </appender> 
    <appender name="DataLog" type="log4net.Appender.RollingFileAppender"> 
     <file value="Logs/data.txt" /> 
     <appendToFile value="true" /> 
     <maximumFileSize value="100KB" /> 
     <rollingStyle value="Size" /> 
     <maxSizeRollBackups value="5" /> 
     <layout type="log4net.Layout.PatternLayout"> 
     <conversionPattern value="%d{HH:mm:ss.fff} [%t] %-5p %c - %m%n" /> 
     </layout> 
    </appender> 

    <!-- levels: DEBUG, INFO, WARN, ERROR, FATAL --> 

    <root> 
     <level value="DEBUG"/> 
     <appender-ref ref="GeneralLog" /> 
    </root> 

    <logger name="NHibernate" additivity="false"> 
     <level value="DEBUG"/> 
     <appender-ref ref="NHibernateFileLog"/> 
    </logger> 
    <logger name="Pushable.Data" additivity="false"> 
     <level value="DEBUG"/> 
     <appender-ref ref="DataLog"/> 
    </logger> 
</log4net> 

、何も出力はlog4netのどこからでも作成されません。 log4netが実行されるアプリケーションは、WebまたはWindowsであり、テストアプリケーションではありませんか?あなただけNhiberante構成セクションにtrueにshow_sqlプロパティを設定解雇すべてのSQL文、見たい場合

+0

あなたのテストDLLにconfig.dllがあることを確認してください。test.dll.config –

+0

私は二重チェックしてあります。私はそこに接続文字列も格納されているので、動作していることを知っています。 – Josh

答えて

5

、コールが必要である:

log4net.Config.XmlConfigurator.Configure(); 

これはうまくロギングを有効にします。

1

例えば、あなたにすべてのNHibernateを与えるDEBUGでのlog4netを使用して

<hibernate-configuration xmlns="urn:nhibernate-configuration-2.2"> 
<property name="show_sql">true</property> 
</hibernate-configuration> 
1

伝える必要があります。

あなたはちょうどあなたが生産ではなく、テストのコードをログに記録されている場合は、に見てみましょうSQL出力

Configure Log4Net for use with NHibernate

<?xml version="1.0" encoding="utf-8" ?> 
<configuration> 
<configSections> 
<!-- Others sections --> 
<section name="log4net" 
type="log4net.Config.Log4NetConfigurationSectionHandler,log4net" /> 
</configSections> 

<!-- Some others configurations --> 

<!-- This section contains the log4net configuration settings --> 
<log4net debug="false"> 

<appender name="console" 
type="log4net.Appender.ConsoleAppender, log4net"> 
<layout type="log4net.Layout.PatternLayout,log4net"> 
<param name="ConversionPattern" 
value="%d{ABSOLUTE} %-5p %c{1}:%L - %m%n" /> 
</layout> 
</appender> 

<!-- Setup the root category, add the appenders and set the default priority --> 
<root> 
<priority value="DEBUG" /> 
<appender-ref ref="console" /> 
</root> 

</log4net> 
</configuration> 
+0

+1リンクは非常に役に立ちました –

0

を見たい場合はshow_sqlは素晴らしい選択肢ですディレクトリをテストします。テストは "testresults"というサブディレクトリで実行されます。テストディレクトリはすべてのテストランに対して作成されます。あなたの設定ファイルは確かにそこにはありません。

テストディレクトリにインストールする必要があるものはすべて宣言する必要があります。 [DeploymentItem( "myfile")]を使用してテストクラスに追加するか、[テスト] - > [テスト実行設定の編集] - > [ローカルテスト実行]を選択します。次に、 "Deployment"に行き、設定ファイルを追加します。テスト初期化子で

+0

私はテスト結果フォルダを見ましたが、そこには何も見えませんでした。私はソリューションディレクトリ全体を検索しても何も記録されていません。私は周りを続ける必要があります。 – Josh

+0

ちょうどそれを明確にするために:1)あなたのlog4net構成がコードロギングを本当に行うようにする必要があります。この設定を使用してアプリケーションを起動して、これをテストします。 2)log4netの設定が実際にtestresultsフォルダに展開されていることを確認する必要があります。私の答えに記述されているようにこれを行い、testresults \ blabla \ outフォルダーを調べてこれをテストします。存在しない場合は、ログファイルを検索する必要はありません。 –

+0

DeploymentItemを試しましたか? –

関連する問題