无法让NHibernate和Log4Net生成日志记录。
我无法获取NHibernate或我的应用程序的任何日志记录。我尝试了我能想到的一切,但没有任何效果 这是我的密码:无法让NHibernate和Log4Net生成日志记录。,nhibernate,logging,log4net,Nhibernate,Logging,Log4net,我无法获取NHibernate或我的应用程序的任何日志记录。我尝试了我能想到的一切,但没有任何效果 这是我的密码: using System.Reflection; using NHibernate.Cfg; [assembly: log4net.Config.XmlConfigurator(ConfigFile = "Log4Net.config", Watch = true)] namespace NHibernate_Log4Net { class Program {
using System.Reflection;
using NHibernate.Cfg;
[assembly: log4net.Config.XmlConfigurator(ConfigFile = "Log4Net.config", Watch = true)]
namespace NHibernate_Log4Net
{
class Program
{
static void Main(string[] args)
{
var cfg = new Configuration()
.Configure()
.AddAssembly(Assembly.GetCallingAssembly());
}
}
}
namespace NHibernate_Log4Net.Model
{
public class Item
{
public int Id { get; set; }
public int Title { get; set; }
public int Alias { get; set; }
}
}
Item.hbm.xml文件:
Log4Net.config文件:
NHibernate抛出一个类用户不存在的错误。这是意料之中的,但为什么我看不到来自NHibernate的任何日志记录
我可以自己记录,但我看不到NHibernate的任何日志。配置文件需要匹配可执行文件,您的可执行文件名为Log4Net.exe吗?配置文件需要匹配可执行文件,您的可执行文件名为Log4Net.exe吗?我过去在使用XmlConfigurator属性时遇到过问题。也许您应该在main中显式调用XmlConfigurator,如下所示:
namespace NHibernate_Log4Net
{
class Program
{
static void Main(string[] args)
{
XmlConfigurator.ConfigureAndWatch(new FileInfo("log4net.config"));
var cfg = new Configuration()
.Configure()
.AddAssembly(Assembly.GetCallingAssembly());
}
}
}
我过去在使用XmlConfigurator属性时遇到过问题。也许您应该在main中显式调用XmlConfigurator,如下所示:
namespace NHibernate_Log4Net
{
class Program
{
static void Main(string[] args)
{
XmlConfigurator.ConfigureAndWatch(new FileInfo("log4net.config"));
var cfg = new Configuration()
.Configure()
.AddAssembly(Assembly.GetCallingAssembly());
}
}
}
我使用上面的链接设置日志记录。试试下面的方法
[assembly: log4net.Config.XmlConfigurator(ConfigFile = "Log4Net.config", Watch = true)]
namespace NHibernate_Log4Net
{
class Program
{
static void Main(string[] args)
{
log4net.Config.XmlConfigurator.Configure();
var cfg = new Configuration()
.AddAssembly(Assembly.GetCallingAssembly());
.Configure()
}
}
}
额外的是这条线
log4net.Config.XmlConfigurator.Configure();
直到我加上那句话,它才对我起作用。我知道这和杰弗里的建议有些相似,但是。。。就我的20美分
另外,对Nhibernate配置对象的Configure调用不应该排在最后吗?在添加程序集之后
我使用上面的链接设置日志记录。试试下面的方法
[assembly: log4net.Config.XmlConfigurator(ConfigFile = "Log4Net.config", Watch = true)]
namespace NHibernate_Log4Net
{
class Program
{
static void Main(string[] args)
{
log4net.Config.XmlConfigurator.Configure();
var cfg = new Configuration()
.AddAssembly(Assembly.GetCallingAssembly());
.Configure()
}
}
}
额外的是这条线
log4net.Config.XmlConfigurator.Configure();
直到我加上那句话,它才对我起作用。我知道这和杰弗里的建议有些相似,但是。。。就我的20美分
另外,对Nhibernate配置对象的Configure调用不应该排在最后吗?添加程序集后?如果为NHibernate记录器设置的日志记录级别过高或关闭,则可能看不到来自NHibernate的任何日志消息。例如,它的价值是什么 log4net.Repository.Hierarchy.LoggerLogManager.GetLoggerNHibernate.Logger.Level 您的配置文件中应该有这样一个部分:
<log4net>
<appender name="NHLog" type="log4net.Appender.FileAppender">
<file value="logs/nhibernate.log" />
<appendToFile value="false" />
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="%d{HH:mm:ss.fff} [%t] %-5p %c - %m%n" />
</layout>
</appender>
<logger name="NHibernate" additivity="false">
<level value="DEBUG"/>
<appender-ref ref="NHLog"/>
</logger>
</log4net>
如果仍然没有乐趣,您可能必须发布一些代码/配置。如果为NHibernate记录器设置的日志记录级别过高或关闭,您可能看不到来自NHibernate的任何日志消息。例如,它的价值是什么 log4net.Repository.Hierarchy.LoggerLogManager.GetLoggerNHibernate.Logger.Level 您的配置文件中应该有这样一个部分:
<log4net>
<appender name="NHLog" type="log4net.Appender.FileAppender">
<file value="logs/nhibernate.log" />
<appendToFile value="false" />
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="%d{HH:mm:ss.fff} [%t] %-5p %c - %m%n" />
</layout>
</appender>
<logger name="NHibernate" additivity="false">
<level value="DEBUG"/>
<appender-ref ref="NHLog"/>
</logger>
</log4net>
如果仍然没有乐趣,您可能必须发布一些代码/配置。我的可执行文件名是NHibernate_Log4Net.exe,但Log4Net.config不是app.config,而是在[assembly:Log4Net.config.XmlConfiguratorConfigFile=Log4Net.config,Watch=true]中使用的。我认为没有人会为您加载它。试着把它命名为NHibernate_Log4Net.exe.config。我试过了,它什么都没做。正如我上面所说的,我认为不需要它。您是否尝试将该属性放在AssemblyInfo.cs文件中而不是主类中?我想知道这是否与属性的声明位置有关?您是否尝试过绝对引用log4net.config。似乎根本找不到文件。还有,你试过打开log4net的调试功能吗?我的可执行文件名是NHibernate_Log4Net.exe,但Log4Net.config不是app.config,而是在[assembly:Log4Net.config.XmlConfiguratorConfigFile=Log4Net.config,Watch=true]中使用的。我认为没有人会为您加载它。试着把它命名为NHibernate_Log4Net.exe.config。我试过了,它什么都没做。正如我上面所说的,我认为不需要它。您是否尝试将该属性放在AssemblyInfo.cs文件中而不是主类中?我想知道这是否与属性的声明位置有关?您是否尝试过绝对引用log4net.config。似乎根本找不到文件。还有,你试过打开log4net的调试功能吗?我可以从log4net获取日志,但我看不到来自NHibernate的任何日志。据我所知,首先是配置,这意味着我们首先基于xml配置文件进行配置,然后再查找hbm文件。我可以从log4net获取日志,但我没有看到NHibernate的任何日志。据我所知,首先是配置,这意味着我们首先基于xml配置文件进行配置,然后我们寻找hbm文件。我有,日志/nhibernate.log总是生成但保持为空。我有,日志/nhibernate.log总是生成但保持为空。