【问题标题】:How to get NHibernate to logging a file, not the console?如何让 NHibernate 记录文件,而不是控制台?
【发布时间】:2015-04-28 16:50:55
【问题描述】:

如果我打开show_sql,那么NHibernate 会记录它的查询,这正是我想要看到的。但是,我的应用程序是一个控制台程序,打开 show_sql 无论如何都会导致 SQL 出现在控制台中。我不想在控制台中看到它,而只想在文件中看到它。

注意:我使用 log4net 来控制日志记录。

对于此问题的任何建议或指导表示赞赏。

【问题讨论】:

    标签: c# nhibernate fluent-nhibernate log4net


    【解决方案1】:

    我们可以使用 log4net 和它的一些 appender(即像 RollingFileAppender 这样的文件 appender) 来跟踪 NHibernate(包括生成的 SQL)

    有一个详细的方法:

    Configure Log4Net for use with NHibernate

    <log4net>
      <appender name="RollingFileAppender" type="log4net.Appender.RollingFileAppender">
        <file value="c:\Logs\myLog.log" />
        <layout type="log4net.Layout.PatternLayout">
          <ConversionPattern value="[%-3d|%-4t|%-5p|%-75c] %m | %-10u %n" />
        </layout>
        <appendToFile value="true" />
        <maximumFileSize value="1MB" />
        <staticLogFileName value="true" />
        <rollingStyle value="Size" />
        <maxSizeRollBackups value="2" />
      </appender>
    ...
    

    然后声明记录器

    <logger name="NHibernate">
      <level value="WARN" />
      <appender-ref ref="RollingFileAppender" />
    </logger>
    
    <logger name="NHibernate.SQL">
      <level value="DEBUG" />
      <appender-ref ref="RollingFileAppender" />
    </logger>
    

    注意:这里,我们没有使用配置设置&lt;property name="show_sql"&gt;false&lt;/property&gt;。我们只是用 log4net 跟踪

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-02-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-01-13
      • 2019-03-31
      • 2014-06-15
      相关资源
      最近更新 更多