Мониторинг в реальном времени в приложении, генерирующий журналы

У меня есть приложение в.NET, которое мне нужно записать. Я хочу регистрировать определенные события и исключения. Я видел онлайн, что log4net был сильно рекомендован для этой цели. Я установил его для быстрого начала регистрации в txt файле.

Но это недостаточно для моих целей. Из моего приложения я хотел бы иметь возможность поднять монитор, в котором есть список всех создаваемых журналов.

Если log4net лучший подход для этого? Если нет, то что?

У меня нет проблем с потреблением событий журнала и поиска моего собственного способа отображения данных, я просто не знаю, как лучше всего отправить события регистрации в мою форму монитора.

0
источник поделиться
1 ответ

Возможно, вы захотите посмотреть на log2console, который является отличным протоколом ведения журнала, совместимым с log4net. Он может прослушивать добавочный список log4net и представлять данные довольно хорошо.

Если вам нужно реализовать собственный монитор изнутри программы, я бы предложил попробовать MemoryAppender. Там какая-то полезная информация здесь (вопрос на самом деле очень хороший учебник)

Как вы можете видеть, он настроил два приложения - один, который записывается в файл, и тот, который регистрируется в приложении памяти. На вашем мониторе вы можете получить дескриптор приложения с помощью следующего кода:

Hierarchy hierarchy = LogManager.GetRepository() as Hierarchy;
MemoryAppender mappender = hierarchy.Root.GetAppender("MemoryAppender") as MemoryAppender;

И вы можете циклически получать новые события в фоновом потоке с помощью mappender.GetEvents(), прежде чем очистить его с помощью mappender.Clear(). Имейте в виду, что это не потокобезопасно, поэтому создание поточной безопасной оболочки для ведения журнала - это, вероятно, хорошая идея.

+2
источник

Посмотрите другие вопросы по меткам или Задайте вопрос