CodeCampServer不从NHibernate输入任何日志记录?

时间:2010-02-02 19:48:58

标签: nhibernate logging

您是否曾使用CodeCampServer架构成功输入NHibernate日志记录?

我读了this,我尽我所能。也许这个架构中存在问题。

我使用Infrastructure.NHibernate.DataAccess.Bases.Logger.EnsureInitialized(); 初始化log4net。这里是代码:

public class DependencyRegistrar
{
    private static bool _dependenciesRegistered;

    private static void RegisterDependencies()
    {
        ObjectFactory.Initialize(x => x.Scan(y =>
                                                {
                                                    y.AssemblyContainingType<DependencyRegistry>();
                                                    y.AssemblyContainingType<NaakRegistry>();
                                                    y.LookForRegistries();
                                                    y.AddAllTypesOf<IRequiresConfigurationOnStartup>();
                                                }));
        new InitiailizeDefaultFactories().Configure();
    }

    private static readonly object sync = new object();

    internal void ConfigureOnStartup()
    {
        Infrastructure.NHibernate.DataAccess.Bases.Logger.EnsureInitialized();

        RegisterDependencies();
        var dependenciesToInitialized = ObjectFactory.GetAllInstances<IRequiresConfigurationOnStartup>();
        foreach (var dependency in dependenciesToInitialized)
        {
            dependency.Configure();
        }
    }
    public static T Resolve<T>()
    {
        return ObjectFactory.GetInstance<T>();
    }

    public static object Resolve(Type modelType)
    {
        return ObjectFactory.GetInstance(modelType);
    }

    public static bool Registered(Type type)
    {
        EnsureDependenciesRegistered();
        return ObjectFactory.GetInstance(type) != null;
    }

    public static void EnsureDependenciesRegistered()
    {
        if (!_dependenciesRegistered)
        {
            lock (sync)
            {
                if (!_dependenciesRegistered)
                {
                    RegisterDependencies();
                    _dependenciesRegistered = true;

                }
            }
        }
    }
} 

我看到了日志文件,我无法在应用运行时删除它们,所以我知道它们是生成的。另外,当我登录测试时,日志输入。例如,此代码输入日志。

    Bases.Logger.Debug(this, "Debug test!")

那么,CodeCampServer是否存在log4net的架构问题?

2 个答案:

答案 0 :(得分:-1)

该帖子对我来说是正确的。 您确定添加了必要的程序集级别属性吗?

[assembly: log4net.Config.XmlConfigurator(Watch = true)]

如果这不起作用,您可以尝试:

log4net.Config.XmlConfigurator.Configure();

例如在Global.asax的Application_Start中。 如果这不起作用,请发布您的示例代码。

答案 1 :(得分:-1)

通过将log4net.dll的引用替换为NHibernate bin附带的on,而不是自己的log4net,意外地找到了解决方案。

有线,但我有日志...... :)