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);
}
}
我正在升级一个 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);
}
}