Как настроить log4net для отката

Это моя ситуация. Я успешно реализовал ведение журнала в удаленный системный журнал с помощью log4net. Однако, насколько я мог проверить, если IP-адрес системного журнала недействителен, все сообщения нигде не будут регистрироваться, и никаких исключений не возникает. Он просто ничего не делает.

Поэтому было бы неплохо иметь какой-то запасной вариант. Скажем, если запись в системный журнал не удалась, запишите в файл или в базу данных.

Это вообще возможно с log4net? Или мне нужно настроить его для входа в два места одновременно?


person Vladimir Kocjancic    schedule 14.07.2010    source источник


Ответы (1)


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

Если ваше приложение может потреблять накладные расходы на ведение журнала, самым простым решением будет по умолчанию вести журнал в альтернативном приложении.

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

Из часто задаваемых вопросов по log4net:

Вы можете реализовать интерфейс log4net.Appender.IApender для создания собственного настраиваемого приложения. Мы рекомендуем вам расширить класс log4net.Appender.AppenderSkeleton, а не начинать с нуля. Вы должны реализовать свой собственный код в сборке, отдельной от сборки log4net.

Для начала стоит посмотреть исходный код log4net.Appender.TraceAppender как пример минимального количества кода, необходимого для работы приложения.

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

person jevakallio    schedule 14.07.2010
comment
Я надеялся, что это можно сделать. Я использую быстрое и грязное решение. Двойная регистрация. Однако будет пользователь RollingFileAppender. - person Vladimir Kocjancic; 14.07.2010
comment
это неправильно, есть способ решить эту проблему: FallbackAppender и этот в переполнение стека - person Reza M.A; 07.07.2014
comment
@RezaMA, в этом нет ничего плохого. Цитата предлагает именно то, что реализовано в FallbackAppender. - person Mixxiphoid; 15.01.2018