我有一个奇怪的问题log4net。log4net从外部配置文件设置不起作用
在一个ASP.NET应用程序中,我想在外部配置log4net,所以我有一个单独的log4net.config文件,我使用属于我的Web应用程序的AssemblyInfo.cs文件中的此行连接到我的Web应用程序:现在
[assembly: log4net.Config.XmlConfigurator(ConfigFile = "Log4Net.config", Watch = true)]
,如果我实例log4net的记录器类这样的正常方式:
public class MyClass
{
private static readonly ILog _logger = log4net.LogManager.GetLogger(typeof(MyClass));
....
那么这个作品,并记录工作正常。但是,我将日志记录代码封装在LogManager类中,该类是独立程序集(基础结构)的一部分,并在多个项目中重复使用。它有一个GetLogger,看起来像这样:
public static class LogManager
{
public static ILog GetLogger()
{
var stack = new StackTrace();
var frame = stack.GetFrame(1);
return new log4net.LogManager.GetLogger(frame.GetMethod().DeclaringType);
}
}
所以我可以在我的asp.net代码中使用此:
public class MyClass
{
private static readonly ILog _logger = LogManager.GetLogger();
....
但是......这不行!没有记录产生它似乎没有正确地连接配置文件。如果我把我的log4net config直接放到web.config中,那么这个LogManager工作正常。
当Log4Net首次在当前正在执行的程序集中被激发时,Log4Net是否扫描了程序集属性,因此,如果未在该程序集中定义该属性,那么该程序没有按预期设置? –
是的,可能是 - 这可能与Eben的响应低于 –