2012-02-01 9 views
1

このトピックに関する多くの質問と回答がありますが、私は自分の問題に対する答えを見つけることができませんでした。ここで説明するように、私はNHibernateのためにlog4netを構成した:http://nhibernate.hibernatingrhinos.com/19/how-to-configure-log4net-for-use-with-nhibernate流暢NHibernateとlog4net

私はトレースアペンダを使用するためにlog4netを構成している唯一の違い:

<appender name="trace" type="log4net.Appender.TraceAppender, log4net"> 
    <layout type="log4net.Layout.PatternLayout,log4net"> 
     <param name="ConversionPattern" value="%d %p %m%n" /> 
    </layout> 
</appender> 
.... 
    <logger name="NHibernate" additivity="false"> 
     <level value="ALL"/> 
     <appender-ref ref="trace"/> 
    </logger> 
    <logger name="NHibernate.SQL" additivity="false"> 
     <level value="ALL"/> 
     <appender-ref ref="trace"/> 
    </logger> 

そしてプレストが、私はNHibernateのログを取得します。しかし、生成されたSQLクエリは表示されません。これは私が期待していたものです。セッションのオープンとクローズ、トランザクションのコミットなどをログに記録しますが、クエリには何もデータベースに送信されません。誰かが私が見落としていることを知っていますか?

私はNHibernate 3.1を使用するFluent NHibernate 1.2を使用しています。設定でShowSql()を有効にしました。

+0

流暢NHibernateの構成から 'SHOWSQL()'の呼び出しを削除してください。 –

+0

@Pieter - ShowSql()を有効にすると、少なくともVS出力ウィンドウに表示されますか?それはFNH 1.0で私のために働く。生成されたSQLを見ることができますが、もちろん保存されません。 –

+0

'ShowSql()'を有効にすると、クエリはVS出力ウィンドウに表示されません。 'ShowSql()'の削除はまだlog4netロギングには表示されません。 – Pieter

答えて

0

は、あなたの流暢なNH構成でゼロにAdoNetBatchSizeを設定してみてください:

Fluently 
    .Configure() 
    .Database(...) 
    .AdoNetBatchSize(0) 
+0

残念ながら、それは状況を変えません。ログ出力にはまだクエリがありません。 – Pieter

0

はアペンダの両方からadditivity="false"を削除してください。どちらか、またはNHibernate.SQLの別のアペンダーを使用してください。それらを両方ともfalseに設定することは、この例では本当に意味をなさない。

SQLクエリを通常のnhibernateログと区別したい場合、これは意味をなさないIF異なるアペンダーを使用しています。

http://logging.apache.org/log4net/release/sdk/log4net.Repository.Hierarchy.Logger.Additivity.html