2012-05-24 42 views
0

这让我疯狂了......我花了半天的时间试图把所有的东西都弄出来,但是我不能让log4net吐出关于NHibernate的任何东西。另一个log4net,流利的nhibernate配置问题

这是我目前的功能NHibernate配置:

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中获得任何东西。

我已经试过:

  • 设置在我的功能NHibernate配置=> SQL ShowSql()出现在VS控制台。
  • 添加NHibernate的记录
  • 使用是ConsoleAppender,而不是LogFileAppender
  • 重新编译功能NHibernate(输出虽然我得到了应用常规日志仍然没有SQL)去除加
  • ,尝试了3个不同版本的log4net的..

我的流利Nhibernate映射是好的,我的应用程序工作完美无需log4net。

我仍然无法登录NHibernate的任何查询...不知道发生了什么,但如果你有线索我会很乐意尝试一下!

谢谢!

+2

你使用哪个版本的NHibernate? NHibernate.dll与log4net.dll在同一个文件夹中? – Firo

+1

检查您在主要项目中引用的log4net版本是否与NHibernate引用的版本相同。 –

+0

感谢您的意见球员。我使用最新版本的NHibernate(3.3.0.4)和位于其测试文件夹中的log4net dll(1.2.10)(因为NHibernate不再具有log4net依赖)。我在.net 4.0中使用NHibernate 3.3.0.4的DLL重新编译了FluentNhibernate,并在我的应用程序中使用了所有3个DLL。是的,所有的DLL都在同一个文件夹中。 – karlipoppins

回答

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在我的输出文件夹固定的问题。