无论如何,NHibernate消息都会进入控制台

时间:2012-10-25 12:35:45

标签: nhibernate fluent-nhibernate log4net

我有一个使用Fluent NHibernate的控制台应用程序。我已将其配置为使用log4net登录到各个位置。而且效果很好。我可以看到我想看到的SQL,并可以将日志输出发送到各种appender。问题是我无法抑制log4net sql输出到控制台。

额外的控制台输出不受我的log4net配置设置的控制。无论我是否关掉所有的appender,它总会出现。

有什么建议吗?

3 个答案:

答案 0 :(得分:1)

您是否在app.config的nhibernate部分中将此属性设置为 true

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

如果是,请将其设置为false。

修改

以下是来自nhibernate源代码的示例代码:

log.Debug(logMessage);
if (LogToStdout)
{
    Console.Out.WriteLine("NHibernate: " + statement);
}

在上面的代码中,LogToStdout直接链接到show_sql配置属性。如果将此设置为true,则不会阻止它写入控制台。关于您的评论,您无法通过log4net控制此操作。您只能使用log.Debug(logMessage)通过log4net控制您正在执行的操作。

答案 1 :(得分:1)

要禁用任何日志,请输入以下代码:

< add key="nhibernate-logger" value="" />

进入appSettings部分。

答案 2 :(得分:0)

NHibernate日志对我没什么帮助,我会在需要时将它们打开...我将这些设置添加到app.config的log4net部分:

    <logger name="NHibernate">
      <level value="OFF" />
    </logger>

    <logger name="NHibernate.SQL">
      <level value="OFF" />
    </logger>