概念実証として、WCF サービスのプロキシをラップするコンソール アプリケーションを使用しています。プロキシ経由でいくつかの呼び出しを実行し、結果をコンソールに書き込みます。WCF サービスの基盤となるのは、NHibernate を ORM として使用するリポジトリ パターンに基づいて構築されたデータ アクセス レイヤーです。NHib で生成された SQL をコンソールに書き込みたい。
ここからの NuGet パッケージとガイダンスを使用して NLog を構成しようとしましたが、うまくいきませんでしたが、多層アーキテクチャでこれらのさまざまな構成ビットを実行する必要がある場所を正しく理解していない可能性があります。これが私のレイアウトを説明する試みです:
Solution
|
-- WCF Service
|
-- DAL
| | (NHibernate is used here)
| -- hibernate.cfg.xml
| NLog.config
| App.config (r)
-- WCF Client (console app)
|
--App.config (c)
hibernate.cfg.xml の内容:
<hibernate-configuration xmlns="urn:nhibernate-configuration-2.2">
<session-factory>
<property name="connection.provider">NHibernate.Connection.DriverConnectionProvider</property>
<property name="dialect">NHibernate.Dialect.MsSql2012Dialect</property>
<property name="connection.driver_class">NHibernate.Driver.SqlClientDriver</property>
<property name="show_sql">true</property>
<property name="connection.connection_string">Data Source=.\SQLEXPRESS;Initial Catalog=AdventureWorks2012;User ID=**;Password=********</property>
</session-factory>
</hibernate-configuration>
NLog.config の内容:
<nlog xmlns="http://www.nlog-project.org/schemas/NLog.xsd"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<targets>
<target name="trace" type="Trace" />
</targets>
<rules>
<logger name="NHibernate.SQL" writeTo="trace" />
</rules>
</nlog>
App.config (r) の内容:
<configuration>
<appSettings>
<add key="nhibernate-logger" value="NHibernate.NLogLoggerFactory, NHibernate.NLog" />
</appSettings>
</configuration>
App.config (c) の内容:
<configuration>
<system.diagnostics>
<trace autoflush="true">
<listeners>
<add name="consoleListener" type="System.Diagnostics.ConsoleTraceListener" />
</listeners>
</trace>
</system.diagnostics>
<appSettings>
<add key="nhibernate-logger" value="NHibernate.NLogLoggerFactory, NHibernate.NLog" />
</appSettings>
</configuration>
私の NUnit 単体テストは SQL ステートメントを表示しているので、show-sql
hibernate.cfg.xml の命令は正しく機能しています。Trace.WriteLine()
コンソールに表示されるコンソール アプリにを挿入すると、Trace に書き込まれたものはすべてそこに表示されるはずです。しかし、コンソールに SQL が表示されません。
.config
アプリの間違ったレイヤーに命令の一部を配置したと思いますが、どこでしょうか?