用log4net 时,遇到这样一个棘手的错误,初次使用时,可以正常写到数据库,当我把数据库中所有记录truncate之后,却无法写入数据库,调试结果发现,log4net.Ilog logger的所有的判断是否能调用相应方法的属性(isDebugEnabled,isInfoEnabled,...)全为 false,这样当然导致无法写入数据库了。

   后来发现是无法读取到配置文件了,于是用下面两句话注册了一下 

string path = System.Web.HttpContext.Current.Server.MapPath(@"~\web.config");
        log4net.Config.XmlConfigurator.Configure(new System.IO.FileInfo(path));

然后再使用,则正常写入数据库,再怎么truncate的数据库都可以找到配置文件,并且可以正确写入数据库。

不过存在的疑问是,为什么在没写这两句话的时候,删除数据库所有记录,会找不到配置文件呢,正常情况下,系统运行会自动读取配置文件中的东西。