Я обновляю программу C# с простым статическим классом FileLogger, который просто записывает строку в текстовый файл. Я хочу использовать log4net. Вместо того, чтобы вырывать класс FileLogger, я решил, что могу просто переписать этот класс, чтобы использовать log4net. В классе есть метод, сигнатура которого:
WriteMessage(string message)
Я хочу заменить это методом, который использует эту подпись:
WriteMessage(string message, log4net.core.Level level)
Но единственный известный мне способ писать сообщения в log4net — это использовать ILog.Debug(), ILog.Warn() и так далее. Если это все, что у меня есть, мне придется иметь действительно уродливый оператор switch в моем методе WriteMessage(). Разве нет лучшего способа?
Обновлено: я даже не могу использовать переключатель для объекта log4net.Core.Level, потому что уровень — это класс, а не перечисление. Я, вероятно, должен просто полностью вырвать FileLogger и использовать log4net так, как он должен был использоваться, но мне по-прежнему любопытно. Я хотел бы иметь метод написания сообщений, который использует уровень в качестве параметра.
Вы можете использовать метод 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);
}
}