Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/logging/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
无法让NHibernate和Log4Net生成日志记录。_Nhibernate_Logging_Log4net - Fatal编程技术网

无法让NHibernate和Log4Net生成日志记录。

无法让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 {

我无法获取NHibernate或我的应用程序的任何日志记录。我尝试了我能想到的一切,但没有任何效果

这是我的密码:

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总是生成但保持为空。