Как программно изменить путь к файлу журнала в log4net?

Я использую % property%, чтобы установить путь к выходному файлу в файле конфигурации Log4Net. Файл журнала будет создаваться в папке данных приложения каждый раз при запуске приложения. Я использую Composite Rolling style для прокрутки файлов.

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

  1. Как накатить файл в коде c #. Ожидаемое поведение аналогично прокрутке в зависимости от размера и даты.
  2. Каков код C # для изменения пути к выходному файлу в Log4Net между выполнением программы?

Пожалуйста, дайте мне знать, если мое требование непонятно.

Спасибо.


person Venkat    schedule 11.10.2017    source источник


Ответы (1)


У вас есть 2 вопроса:

  1. Я не знаю, возможно ли это. Я предполагаю, что переход к следующему имени является частным в приложении ролика файлов. Вы можете посмотреть в src, если у вас есть доступ к нему. Если нет, вы можете унаследовать от RollingFileAppender и добавить свою собственную реализацию. Вы можете получить приложения во время выполнения:

код:

  LogManager.GetRepository().GetAppenders();
  1. Использование собственности - правильный путь. Ваша конфигурация должна выглядеть так:

config:

 <appender name="YourAppender" type="log4net.Appender.RollingFileAppender"> 
    <file type="log4net.Util.PatternString" value="~/App_Data/%property{LogName}" />
 </appender>

Важным является type="log4net.Util.PatternString". Установите свойство перед инициализацией log4net.

log4net.GlobalContext.Properties["LogName"] = name;
person Peter    schedule 11.10.2017
comment
Спасибо за ответ. Не могли бы вы поделиться мне исходным местоположением, чтобы проверить ваше предложение. Будет полезно определить, является ли метод частным или общедоступным. - person Venkat; 11.10.2017