Как можно устранить неполадки log4net, когда он прекращает запись - PullRequest
16 голосов
/ 24 марта 2009

Похоже, что Log4Net молча отключается по непонятным причинам, и я не знаю, как его устранить. Я догадываюсь, что конкретный аппендер терпит неудачу в определенном сообщении журнала, и это, кажется, закрывает весь стек.

Есть ли способ заставить Log4Net генерировать исключение (по крайней мере, во время нашей фазы отладки), вместо того, чтобы отключать сервис из-за неосторожности.

Ответы [ 3 ]

24 голосов
/ 26 августа 2010

Расширение на предыдущий ответ -

Чтобы добавить прослушиватель трассировки для трассировки log4net.Internal.Debug, добавьте это в конфигурацию вашего приложения:

  <system.diagnostics>
    <trace autoflush="true">
      <listeners>
        <add
            name="textWriterTraceListener"
            type="System.Diagnostics.TextWriterTraceListener"
            initializeData="c:\temp\log4net.txt" />
      </listeners>
    </trace>
  </system.diagnostics>

Замените указанное выше значение атрибута initializeData на желаемый путь к файлу журнала. Убедитесь, что приложение или процесс сервера ASP.NET имеют разрешение на запись в этот файл.

Еще одна вещь, которую вы можете сделать, это проверить сообщения, которые возвращаются из конфигурации log4net при запуске. Начиная с версии log.11net 1.2.11 методы XmlConfigurator.Configure () возвращают коллекцию ICollection, содержащую строки, в которых перечислены проблемы, возникшие в процессе настройки.

Так что, если у вас есть что-то вроде этого:

XmlConfigurator.Configure();

изменить на

ICollection configMessages = XmlConfigurator.Configure();

и проверьте configMessages в отладчике или распечатайте их где-нибудь, например,

foreach (string msg in configMessages)
{
   Console.WriteLine(msg);
}

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

15 голосов
/ 25 марта 2009

Я думаю, что есть значение конфигурации, которое вы можете поместить в раздел appSettings вашего app.config / web.config для включения внутренних операторов отладки в log4net:

<appSettings>
    <add key="log4net.Internal.Debug" value="true"/>
</appSettings>

Это даст вам некоторое представление о любых ошибках, которые может проглотить log4net.

0 голосов
/ 31 июля 2015

Мне было трудно понять, почему не работают приложения file log и sql log. Я изменил таблицу SQL по умолчанию, и оказалось, что тип данных Int не годится, а Int32 - правильное значение. Я не мог найти эту информацию, пока я не отладил в Visual Studio и не вошел в метод ведения журнала. Выполнение метода было приостановлено на моей точке останова, и я запустил команду установки в «Немедленном окне»:

log4net.Config.XmlConfigurator.Configure ()

Мне удалось увидеть немедленную обратную связь, и на самом деле возникло исключение при запуске этого кода конфигурации. Он отображался в «Немедленном окне», и я смог решить проблему.

Надеюсь, это кому-нибудь поможет.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...