我有一個奇怪的問題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的響應低於 –