log4net在运行时启用调试日志记录

时间:2009-10-15 19:53:35

标签: c# .net log4net

我试图在没有app.config的情况下进行调试。我有以下代码:

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等设置为false。所以我正在寻找一种在运行时修改它们的方法。

注意:我没有使用app.config,因为这是从MMC加载的dll。

1 个答案:

答案 0 :(得分:4)

如果不调用其中一个静态方法或访问静态类的静态属性,则不会执行静态初始化程序。在以某种方式访问​​类的静态成员之前,您的记录器不会被初始化。

相关问题