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

Does log4net have a message-writing method that accepts a level as a parameter?

我正在升级一个 C# 程序,它有一个简单的静态 FileLogger class,它只将一行写入文本文件。我想使用 log4net。与其删除 FileLogger class,我想我可以重写 class 以使用 log4net。 class 有一个方法,其签名是:

WriteMessage(string message)

我想用使用此签名的方法替换它:

WriteMessage(string message, log4net.core.Level level)

但我知道在 log4net 中写入消息的唯一方法是使用 ILog.Debug()、ILog.Warn() 等。如果这就是我所拥有的,我将不得不在我的 WriteMessage() 方法中有一个非常丑陋的 switch 语句。有没有更好的办法?

编辑:我什至不能在 log4net.Core.Level 对象上使用开关,因为级别是 class,而不是枚举。我可能应该完全删除 FileLogger 并按照预期的方式使用 log4net,但我仍然很好奇。我希望能够有一个使用级别作为参数的消息编写方法。

您可以在ILogger接口上使用Log方法:

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