在没有 xml 文件的情况下初始化 log4net
Initialize log4net without xml file
我需要为 log4net 包创建一个小包装器。
我还需要在不使用 xml 配置文件的情况下初始化记录器(这是一个要求,这个项目中已经有很多配置文件)。
我已经编写了 MyLogger
class,但是当我 运行 程序时,我在控制台中看不到任何东西。
我试图缩减代码以便拥有最少的示例(我删除了我的配置文件加载和其他一些东西)。
首先我创建了记录器实例,我将级别设置为Trace,然后我添加了一个AnsiColorTerminalAppender
。显然有什么不对或遗漏的地方,但我不明白是什么。
如何修复我的 class 以便打印日志消息?
using log4net;
namespace MyProgram
{
static class MyLogger
{
static ILog logger = null;
public static void SetConfiguration()
{
logger = LogManager.GetLogger(typeof(MyLogger));
var l = (log4net.Repository.Hierarchy.Logger)logger.Logger;
l.Level = log4net.Core.Level.Trace;
AddConsoleAppender();
}
public static void Debug(string message)
{
logger.Debug(message);
}
public static void Info(string message)
{
logger.Info(message);
}
// Others here
static private void AddConsoleAppender()
{
var appender = new log4net.Appender.AnsiColorTerminalAppender
{
Threshold = log4net.Core.Level.Info
};
var l = (log4net.Repository.Hierarchy.Logger)logger.Logger;
log4net.Layout.PatternLayout layout = new log4net.Layout.PatternLayout
{
ConversionPattern = "%d [%t] %-5p %c [%x] - %m%n"
};
layout.ActivateOptions();
appender.Name = "Console";
appender.Layout = layout;
appender.ActivateOptions();
l.AddAppender(appender);
}
}
class Program
{
static void Main(string[] args)
{
MyLogger.SetConfiguration();
MyLogger.Info("Logger configuration loaded");
}
}
}
如果您在不使用 BasicConfigurator
的情况下添加附加程序,您应该手动将 Logger 存储库的 Configured
属性 设置为 true。只需将以下行添加到 AddConsoleAppender()
方法的底部:
static private void AddConsoleAppender()
{
// ...
var l = (log4net.Repository.Hierarchy.Logger)logger.Logger;
// ...
l.Repository.Configured = true;
}
我需要为 log4net 包创建一个小包装器。
我还需要在不使用 xml 配置文件的情况下初始化记录器(这是一个要求,这个项目中已经有很多配置文件)。
我已经编写了 MyLogger
class,但是当我 运行 程序时,我在控制台中看不到任何东西。
我试图缩减代码以便拥有最少的示例(我删除了我的配置文件加载和其他一些东西)。
首先我创建了记录器实例,我将级别设置为Trace,然后我添加了一个AnsiColorTerminalAppender
。显然有什么不对或遗漏的地方,但我不明白是什么。
如何修复我的 class 以便打印日志消息?
using log4net;
namespace MyProgram
{
static class MyLogger
{
static ILog logger = null;
public static void SetConfiguration()
{
logger = LogManager.GetLogger(typeof(MyLogger));
var l = (log4net.Repository.Hierarchy.Logger)logger.Logger;
l.Level = log4net.Core.Level.Trace;
AddConsoleAppender();
}
public static void Debug(string message)
{
logger.Debug(message);
}
public static void Info(string message)
{
logger.Info(message);
}
// Others here
static private void AddConsoleAppender()
{
var appender = new log4net.Appender.AnsiColorTerminalAppender
{
Threshold = log4net.Core.Level.Info
};
var l = (log4net.Repository.Hierarchy.Logger)logger.Logger;
log4net.Layout.PatternLayout layout = new log4net.Layout.PatternLayout
{
ConversionPattern = "%d [%t] %-5p %c [%x] - %m%n"
};
layout.ActivateOptions();
appender.Name = "Console";
appender.Layout = layout;
appender.ActivateOptions();
l.AddAppender(appender);
}
}
class Program
{
static void Main(string[] args)
{
MyLogger.SetConfiguration();
MyLogger.Info("Logger configuration loaded");
}
}
}
如果您在不使用 BasicConfigurator
的情况下添加附加程序,您应该手动将 Logger 存储库的 Configured
属性 设置为 true。只需将以下行添加到 AddConsoleAppender()
方法的底部:
static private void AddConsoleAppender()
{
// ...
var l = (log4net.Repository.Hierarchy.Logger)logger.Logger;
// ...
l.Repository.Configured = true;
}