使用log4net和NHibernate

时间:2016-01-15 02:18:54

标签: c# .net nhibernate log4net

我遵循了this教程,并且能够让两个项目都与我的sql server 2012实例一起工作:

但是,当我在我的解决方案中包含 HLogger 项目时(而不是将其与上面的示例项目一起使用),它确实有效。

以下是从提供的示例项目运行它时为我工作的代码段;但是,当我将这个库添加到我自己的解决方案时,它不起作用。

    ILog log = log4net.LogManager.GetLogger("NHibernateLogging");
    log.Error("Error!", new Exception("Exception123"));
    log.Warn("Warning");    

什么都没发生。没有抛出任何东西。未填充数据库。我使用的是与提供的文件相同的hibernate.cfg.xml文件(并与“示例项目”一起使用):

<?xml version="1.0" encoding="utf-8" ?>
<hibernate-configuration xmlns="urn:nhibernate-configuration-2.2">
  <session-factory>
    <property name="connection.provider">
      NHibernate.Connection.DriverConnectionProvider
    </property>
    <property name="connection.driver_class">
      NHibernate.Driver.SqlClientDriver
    </property>
    <property name="connection.connection_string">
      Server=------.net;database=mydb;user id=myuser;password=sdofjosidfjoijsf;persist security info=true;
    </property>
    <property name="dialect">
      NHibernate.Dialect.MsSql2000Dialect
    </property>
    <property name="show_sql">
      true
    </property>
    <property name='proxyfactory.factory_class'>NHibernate.ByteCode.Castle.ProxyFactoryFactory, NHibernate.ByteCode.Castle</property>
  </session-factory>
</hibernate-configuration>

更改是app.config文件。它曾经是:

<section name="log4net"
  type="log4net.Config.Log4NetConfigurationSectionHandler,log4net-net-1.0" />

现在是:

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

原因是我在同一个解决方案中不能有多个版本的log4net,而且由于能够使用msmq记录masstransit的版本2,我无法选择当前的log4net版本。

codeproject站点中的项目是为.NET 3.5创建的,而我的解决方案是.net 4.5。

如何诊断无法在数据库中使用log4net记录任何内容的原因?

1 个答案:

答案 0 :(得分:1)

你可以从

开始
  1. 查看问题是否与Log4Net有关,请尝试为相同的配置添加FileAppender并查看是否有效

  2. 如果log4net有效,那么下一步是检查Appender配置,特别是检查类/程序集名称的名称空间