我对 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 配置直接放入 web.config,那么这个 LogManager 就可以正常工作。