私はlog4netパッケージ用の少しラッパーを作成する必要があります。xmlファイルなしでlog4netを初期化する
xml設定ファイルを使用せずにロガーを初期化する必要もあります(このプロジェクトには設定ファイルがたくさんあります)。
私はMyLogger
クラスを書いていますが、プログラムを実行するとコンソールに何も表示されません。
最小限の例を得るためにコードを縮小しようとしました(設定ファイルの読み込みや他のものを削除しました)。
まず、Loggerインスタンスを作成し、レベルをTraceに設定してから、AnsiColorTerminalAppender
を追加します。明らかに何かが間違っているか行方不明ですが、私は何を理解できません。
ログメッセージを印刷するためにクラスを修正するにはどうすればよいですか?
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");
}
}
}