log4net 패키지에 대한 약간의 래퍼를 만들어야합니다.xml 파일없이 log4net 초기화
xml 구성 파일을 사용하지 않고도 로거를 초기화해야합니다 (요구 사항이므로 이미이 프로젝트에 구성 파일이 많이 있습니다).
나는 MyLogger
클래스를 작성했지만 프로그램을 실행할 때 콘솔에 아무것도 표시되지 않습니다.
최소한의 예를 갖기 위해 코드를 축소하려고했습니다 (설정 파일을 삭제하고 다른 것을 삭제했습니다).
처음에는 로거 인스턴스를 만들고 레벨을 Trace로 설정 한 다음 AnsiColorTerminalAppender
을 추가합니다. 분명히 잘못되었거나 누락 된 것이 있지만 무엇을 이해할 수는 없습니다.
로그 메시지를 인쇄하려면 클래스를 어떻게 수정해야합니까? 당신이 BasicConfigurator
의 사용하지 않고 펜더를 추가하는 경우
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");
}
}
}