【问题标题】:nhibernate 3.2 logging sql querynhibernate 3.2记录sql查询
【发布时间】:2011-11-09 20:51:26
【问题描述】:

我发现了一篇关于在使用 NHibernate 3.x 时记录 sql 查询时发现的困难的帖子 事实上,我正在使用 NHibernate 3.2,我无法让 sql 日志记录工作。 我只需要在测试或调试时写入输出窗口的简单日志记录功能。 它曾经在 NH 2.2 中工作,但在这个新版本中出现了问题。 正如this article 所说,我只是将NHibernate 配置为

<property name="show_sql">true</property>

我有这个简单的代码:

using (var session = PersistenceManager.Istance.GetSession()) {
    var result = (from agenzia in session.Query<Agenzia>()
                 select agenzia).ToList();
    return result;    
}

但似乎没有从数据库中检索到任何内容。所以我不知道是否没有记录任何内容(我正在 Visual Studio 2010 下调试,所以我希望在输出窗口中看到一些东西),或者由于某种奇怪的原因甚至没有执行任何内容。 哪里都不例外,所以有点迷茫

已编辑: 根据要求,这是 NHibernate 的完整配置文件:

<?xml version="1.0" encoding="utf-8" ?>
<!-- NHibernate Configuration -->
<hibernate-configuration xmlns="urn:nhibernate-configuration-2.2">
  <session-factory name="NHibernate.xlns">
    <property name="dialect">
      NHibernate.Dialect.MsSql2000Dialect
    </property>
    <property name="connection.driver_class">
      NHibernate.Driver.SqlClientDriver
    </property>
    <property name="show_sql">true</property>
  </session-factory>
</hibernate-configuration>

【问题讨论】:

  • 你在使用 log4net 吗? (这是默认值)
  • 问题解决了吗?我也有类似的问题。
  • 我的问题不在于日志记录。我只是忘记在 Visual Studio 项目中将 .hbm 文件设置为“嵌入为资源”。如果没有这个设置,NHibernate 引擎根本什么都不做……这就是为什么没有日志;)

标签: sql nhibernate logging


【解决方案1】:

标志 show_sql,AFAIK 登录 STDOUT,因此它在单元测试或控制台应用程序中完美运行,但如果您的应用程序没有标准输出(即 winapp 或 web 应用程序),它什么也不做在这种情况下,您应该在 log4net 配置(或您可能使用的替代记录器)中启用日志 NHibernate.SQL。在 Web 应用程序中,您可以配置跟踪附加程序,以便在调试器的跟踪窗口中查看记录的查询。

【讨论】:

  • 我正在做一个网络应用程序,但我在调试模式下启动它......并且调试应该使用标准输出,AFAIK。
  • 好的,准备了一个控制台应用程序来测试这个问题,输出中什么也没有出现:/
  • 尝试附加您正在使用的完整配置。 show_sql 实际上调用 Console.Out 所以在控制台中它必须工作。
  • 配置似乎没问题。尝试启用 log4net 只是为了看看有什么问题。
【解决方案2】:

如果你使用 log4net,那么要启用 SQL 日志记录,除了设置&lt;property name="show_sql"&gt;true&lt;/property&gt;,你还需要将级别设置为 INFO 或 DEBUG (verbose),如下所示:

  <log4net>
    ...
    <!-- Print only messages of level INFO or above in 'NHibernate' package  -->
    <logger name="NHibernate">
      <level value="INFO" />
    </logger>
  </log4net>

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-11-12
    • 1970-01-01
    • 2015-11-20
    • 2013-10-08
    相关资源
    最近更新 更多