Когда log4net пишет или передает журнал файлу?

Мы используем log4net для входа события приложения winform и ошибки. Наш клиент хочет, проверяют файл журнала во время выполнения приложения. Но я не могу узнать, когда и как log4net делают запись (фиксация) операция. И как отвечать требованию клиента, кроме создания другого регистратора один. Какая-либо справка?Спасибо.

16
задан Iain Holder 9 April 2010 в 15:54
поделиться

2 ответа

Если вы используете FileAppender, этот аппендер наследует TextWriterAppender, который в свою очередь раскрывает свойство ImmediateFlush . По умолчанию значение этого свойства равно true, что заставляет аппендер выполнять Flush() для базового потока при каждой операции Append.

В зависимости от того, как вы представляете себе "мониторинг" лог-файла клиентом, можно включить мониторинг из вашего приложения. Это можно сделать, используя MemoryAppender и считывая события из этого аппендера, в дополнение к аппендингу в файл.

9
ответ дан 30 November 2019 в 23:18
поделиться

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

Это можно сделать с помощью следующего кода:

foreach (IAppender appender in LogManager.GetRepository().GetAppenders())
{
    BufferingAppenderSkeleton b = appender as BufferingAppenderSkeleton;
    if (b != null) b.Flush();
}
-1
ответ дан 30 November 2019 в 23:18
поделиться
Другие вопросы по тегам:

Похожие вопросы: