2009-10-15 99 views
0

我試圖在沒有app.config的情況下調試工作。我有以下代碼:log4net在運行時啓用調試日誌記錄

public static class Logging 
{ 
    private static ConsoleAppender GetConsoleAppender() 
    { 
     ConsoleAppender lAppender = new ConsoleAppender(); 
     lAppender.Name = "Console"; 
     lAppender.Layout = new log4net.Layout.PatternLayout("%date{dd-MM-yyyy HH:mm:ss,fff} %5level [%2thread] %message (%logger{1}:%line)%n"); 
     lAppender.Threshold = log4net.Core.Level.Error; 
     lAppender.ActivateOptions(); 

     return lAppender; 
    } 


    private static FileAppender GetFileAppender() 
    { 
     FileAppender lAppender = new FileAppender(); 
     lAppender.Name = "File"; 
     lAppender.AppendToFile = true; 
     lAppender.File = "C:\\Enum.log"; 
     lAppender.Layout = new 
     log4net.Layout.PatternLayout("%date{dd-MM-yyyy HH:mm:ss,fff} %5level [%2thread] %message (%logger{1}:%line)%n"); 
     lAppender.Threshold = log4net.Core.Level.All; 
     lAppender.ActivateOptions(); 



     return lAppender; 
    } 


    static Logging() 
    { 
     Logger root; 
     root = ((Hierarchy)LogManager.GetRepository()).Root; 
     root.AddAppender(GetConsoleAppender()); 
     root.AddAppender(GetFileAppender()); 
     root.Level = log4net.Core.Level.All; 
     root.Repository.Configured = true; 
    } 
} 

再後來我撥打電話,像這樣:

private static ILog lLog = LogManager.GetLogger(typeof(Logging)); 

這似乎是工作,但是lLog的狀態已全部isDebugEnabled,isErrorEnabled等設置爲假。所以即時通訊尋找一種方法來修改這些在運行時。

注意:我沒有使用app.config,因爲這是一個從MMC加載的dll。

回答

4

如果您不調用某個靜態方法或訪問靜態類的靜態屬性,則不會執行您的靜態初始化程序。在以某種方式訪問​​該類的靜態成員之前,您的記錄器將不會被初始化。

+0

哈哈,完美。我不敢相信我看過。乾杯。 – Kyle 2009-10-16 09:41:16