log4net是否具有接受级别作为参数的消息编写方法?

时间:2019-04-08 20:05:06

标签: log4net

我正在升级具有简单静态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,但我仍然感到好奇。我希望能够有一种使用级别作为参数的消息编写方法。

1 个答案:

答案 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);
    }
}