Есть ли в log4net метод написания сообщений, который принимает уровень в качестве параметра? - PullRequest
0 голосов
/ 08 апреля 2019

Я обновляю программу на 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, потому что Level - это класс, а не перечисление. Мне, вероятно, следует просто полностью удалить FileLogger и использовать log4net так, как он должен был быть использован, но мне по-прежнему любопытно. Мне бы хотелось иметь метод написания сообщений, который использует уровень в качестве параметра.

1 Ответ

2 голосов
/ 09 апреля 2019

Вы можете использовать метод 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);
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...