您是否曾使用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的架构问题?
答案 0 :(得分:-1)
该帖子对我来说是正确的。 您确定添加了必要的程序集级别属性吗?
[assembly: log4net.Config.XmlConfigurator(Watch = true)]
如果这不起作用,您可以尝试:
log4net.Config.XmlConfigurator.Configure();
例如在Global.asax的Application_Start中。 如果这不起作用,请发布您的示例代码。
答案 1 :(得分:-1)
通过将log4net.dll的引用替换为NHibernate bin附带的on,而不是自己的log4net,意外地找到了解决方案。
有线,但我有日志...... :)