我试图在没有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。
答案 0 :(得分:4)
如果不调用其中一个静态方法或访问静态类的静态属性,则不会执行静态初始化程序。在以某种方式访问类的静态成员之前,您的记录器不会被初始化。