使用 log4net 和 NHibernate 将日志信息保存在数据库中
Save Log Information in Database with log4net and NHibernate
我遵循了 this 教程并且能够让这两个项目与我的 sql server 2012 实例一起工作:
但是,当我在 my 解决方案中包含 HLogger 项目时(而不是将其与上面的示例项目一起使用),它确实工作。
以下是一个代码片段,当 运行 来自提供的示例项目时,它对我有用;然而,当我将这个库添加到我自己的解决方案中时,它并没有起作用。
ILog log = log4net.LogManager.GetLogger("NHibernateLogging");
log.Error("Error!", new Exception("Exception123"));
log.Warn("Warning");
什么都没发生。什么都没扔。数据库未填充。我使用的 hibernate.cfg.xml 文件与提供的文件相同(并与 "sample project" 结合使用):
<?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,而且我无法选择我当前的 log4net 版本,因为它能够记录 masstransit 的第 2 版msmq.
codeproject 站点中的项目是为 .NET 3.5 创建的,而我的解决方案是 .net 4.5。
如何诊断无法在数据库中使用 log4net 记录任何内容的原因?
你可以开始,
看看问题是否出在 Log4Net 上,尝试为相同的配置添加一个 FileAppender,看看是否有效
如果 log4net 工作,那么下一步是检查 Appender 配置,特别是仔细检查 类 的命名空间/程序集名称
我遵循了 this 教程并且能够让这两个项目与我的 sql server 2012 实例一起工作:
但是,当我在 my 解决方案中包含 HLogger 项目时(而不是将其与上面的示例项目一起使用),它确实工作。
以下是一个代码片段,当 运行 来自提供的示例项目时,它对我有用;然而,当我将这个库添加到我自己的解决方案中时,它并没有起作用。
ILog log = log4net.LogManager.GetLogger("NHibernateLogging");
log.Error("Error!", new Exception("Exception123"));
log.Warn("Warning");
什么都没发生。什么都没扔。数据库未填充。我使用的 hibernate.cfg.xml 文件与提供的文件相同(并与 "sample project" 结合使用):
<?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,而且我无法选择我当前的 log4net 版本,因为它能够记录 masstransit 的第 2 版msmq.
codeproject 站点中的项目是为 .NET 3.5 创建的,而我的解决方案是 .net 4.5。
如何诊断无法在数据库中使用 log4net 记录任何内容的原因?
你可以开始,
看看问题是否出在 Log4Net 上,尝试为相同的配置添加一个 FileAppender,看看是否有效
如果 log4net 工作,那么下一步是检查 Appender 配置,特别是仔细检查 类 的命名空间/程序集名称