我正在升级具有简单静态FileLogger类的C#程序,该类仅将一行写入文本文件。我想使用log4net。我认为可以只重写该类以使用log4net,而不是删除FileLogger类。该类的方法的签名为:
WriteMessage(string message)
我想用使用该签名的方法替换它:
WriteMessage(string message, log4net.core.Level level)
但是我知道在log4net中写消息的唯一方法是使用ILog.Debug(),ILog.Warn()等。如果仅此而已,我必须在WriteMessage()方法中使用一个真正丑陋的switch语句。有没有更好的方法?
编辑:我什至不能使用log4net.Core.Level对象上的开关,因为Level是一个类,而不是枚举。我可能应该完全淘汰FileLogger并以原本应使用的方式使用log4net,但我仍然感到好奇。我希望能够有一种使用级别作为参数的消息编写方法。
答案 0 :(得分:2)
您可以在Log
界面上使用ILogger
方法:
public class TestClass
{
public TestClass()
{
ILog log = LogManager.GetLogger(this.GetType());
log.Debug("This is debug message");
log.Logger.Log(this.GetType(), Level.Debug, "Another debug message", null);
}
}