Мы используем log4net для входа события приложения winform и ошибки. Наш клиент хочет, проверяют файл журнала во время выполнения приложения. Но я не могу узнать, когда и как log4net делают запись (фиксация) операция. И как отвечать требованию клиента, кроме создания другого регистратора один. Какая-либо справка?Спасибо.
Если вы используете FileAppender
, этот аппендер наследует TextWriterAppender
, который в свою очередь раскрывает свойство ImmediateFlush
. По умолчанию значение этого свойства равно true
, что заставляет аппендер выполнять Flush()
для базового потока при каждой операции Append.
В зависимости от того, как вы представляете себе "мониторинг" лог-файла клиентом, можно включить мониторинг из вашего приложения. Это можно сделать, используя MemoryAppender и считывая события из этого аппендера, в дополнение к аппендингу в файл.
Вы говорите о файле журнала, поэтому, по-видимому, вы используете FileAppender или производный класс. По умолчанию это буферизует вывод. Буферизованный вывод намного эффективнее, поэтому, чтобы удовлетворить ваши требования, я предлагаю вам предоставить некоторый механизм для очистки журнала перед его просмотром, вместо того, чтобы принудительно выполнять фиксацию после каждой операции записи.
Это можно сделать с помощью следующего кода:
foreach (IAppender appender in LogManager.GetRepository().GetAppenders())
{
BufferingAppenderSkeleton b = appender as BufferingAppenderSkeleton;
if (b != null) b.Flush();
}