Вопрос

Мне нужно поймать исключения Log4net (его собственные исключения, а не исключения приложений, зарегистрированные этим). Я желаю, есть способ сделать это таким образом:

Try
    _logger.Info(response)
Catch ex As Exception
    Excepciones.HandleException(ex, "PolicyCore")
End Try
.

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

 <appSettings>
        <add key="log4net.Internal.Debug" value="true" />
    </appSettings>
    <system.diagnostics>
       <trace autoflush="true" indentsize="4" >
         <listeners>
           <add name="textWriterTraceListener" 
               type="System.Diagnostics.TextWriterTraceListener"
               initializeData="C:\\temp\\log4net.txt" />
           <remove name="Default" />
         </listeners>
       </trace>
    </system.diagnostics>
.

И это написание ошибок для log4net.txt, вынужденных я имею в виду.

Этот последний апрек имеет пару недостатков: он не будет добавлять каждую ошибку в файл, если ошибка такая же, она не пишет, я не могу заставить слушатель написать каждую ошибку к этому файлу , только один (я не знаю, как полностью настроить прослушиватель трассировки, это может быть так). Таким образом, он не будет добавлять дату и час до каждой линии, который является необходимостью для меня. Наконец я не могу дать структуру ему (XML).

Даже если слушатель работает , мне нужно использовать PROPE / CALP COMPLOKE , поскольку я использую исключение из ExceptionBling из корпоративной библиотеки для регистрации ошибок в моем приложении.

Любой, кто столкнулся с проблемой и / или имеет решение?

Это было полезно?

Решение

log4net предназначен не для броска любых исключений.Кажется, это хорошая идея, потому что это было бы очень плохо, если ваша заявка не удается, потому что она не может войти.Поэтому, если вам нужно будет регистрировать определенные сообщения и должны быть уверены, что это сработало, то вы не должны использовать журнал Framework, а скорее реализуйте это как часть вашей «бизнес-логики».

Вы упоминаете, что исключение зарегистрировано только один раз.Я думаю, что это неправда: log4net обычно отключает придатчики, которые не работают, и поэтому существует только одно исключение.Экземпляр AdonetAppender может быть настроен на Re-Connect в базу данных в случае сбоя, в этом случае вы увидитето же исключение несколько раз.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top