0

これは私を夢中にさせています...私は半日かけてすべてを変えようとしましたが、log4netにNHibernateについて何も吐き出させることができません。

これが私の現在のFluentNHibernate構成です。

var configuration = Fluently.Configure()
    .Database(SQLiteConfiguration.Standard.UsingFile(AppConstants.PATH_FILENAME_DB))
    .Mappings(m => m.FluentMappings.AddFromAssemblyOf<...>())
    [...Mappings...]
    .Diagnostics(x => x.Enable());

私のapp.config:

<configSections>
  <section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler, log4net"/>
</configSections>

<log4net>
  <appender name="LogFileAppender" type="log4net.Appender.FileAppender">
    <param name="File" value="data/log/unprocessed.log"/>
    <param name="AppendToFile" value="true"/>
    <layout type="log4net.Layout.PatternLayout">
      <param name="ConversionPattern" value="%d [%t] %-5p %c %m%n"/>
    </layout>
  </appender>

  <appender name="ConsoleAppender" type="log4net.Appender.ConsoleAppender">
    <layout type="log4net.Layout.PatternLayout">
      <param name="ConversionPattern" value="%d [%t] %-5p %c %m%n"/>
    </layout>
  </appender>

  <logger name="NHibernate.SQL" additivity="false">
    <level value="ALL"/>
    <appender-ref ref="LogFileAppender"/>
  </logger>

  <root>
    <level value="INFO"/>
    <appender-ref ref="LogFileAppender"/>
  </root>
</log4net>

メインフォームを初期化した直後にログに記録できます。

log4net.Config.XmlConfigurator.Configure();
logger.Info("Here is a debug log!!");

そしてそれは100%動作します。ただし、Nhibernateからは何も取得できません。

私はもう試した:

  • Fluent NHibernate configでShowSql()を設定=>SQLがVSコンソールに表示されます。
  • NHibernateロガーの追加
  • 加法性の除去
  • LogFileAppenderの代わりにConsoleAppenderを使用します(アプリケーションから通常のログを取得しますが、出力にSQLがありません)
  • Fluent NHibernateを再コンパイルし、log4netの3つの異なるバージョンを試しました...

私のFluentNhibernateマッピングは良好で、私のアプリはlog4netなしで完全に機能しています。

NHibernateからのクエリをまだログに記録できません...何が起こっているのかわかりませんが、手がかりがあれば、喜んで試してみます!!!

ありがとう!

4

1 に答える 1

2

さて、私は問題を見つけることになりました...

すべてのDLLは、出力フォルダーではなく/libフォルダーにありました。

私のapp.configの一部にはこれがありました:

<supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.0"/></startup>
<runtime>
  <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
    <probing privatePath="lib"/>
    <dependentAssembly>
      <assemblyIdentity name="System.Data" publicKeyToken="b77a5c561934e089"/>
      <bindingRedirect oldVersion="2.0.0.0" newVersion="4.0.0.0"/>
    </dependentAssembly>
  </assemblyBinding>
</runtime>

log4net.dllを出力フォルダーに入れると、問題が修正されました。

于 2012-05-25T07:41:08.767 に答える