2009-10-15 98 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