Log4net случайным образом прекращает регистрироваться.

Я в настоящее время создаю Приложение ASP.Net-MVC с помощью log4net для входа, но регистратор, кажется, просто останавливается наугад. Это счастливо зарегистрируется некоторое время, и затем остановится и затем запустится снова после промежутка времени. Я даже не уверен, что это, это заставляет его продолжить регистрироваться. Я не говорю о всего нескольких потерянных сообщениях - иногда это исчезает в течение длительного промежутка времени, такого как час или около этого.

Почему это остановилось бы и запустилось бы как это? Как я должен правильно настроить это так, чтобы это случайным образом не останавливалось, как это делает?

Вот моя конфигурация:

<log4net debug="true">
<appender name="RollingLogFileAppender"
        type="log4net.Appender.RollingFileAppender">

  <file value="..\Logs\\CurrentLog.txt" />
  <appendToFile value="true" />
  <datePattern value="yyyyMMdd" />

  <rollingStyle value="Date" />
  <filter type="log4net.Filter.LevelRangeFilter">
    <acceptOnMatch value="true" />

    <levelMin value="INFO" />
    <levelMax value="FATAL" />
  </filter>

  <layout type="log4net.Layout.PatternLayout">
    <conversionPattern
    value="%-5p %d %5rms %-22.22c{1} %-18.18M - %m%n" />
  </layout>

</appender>

<root>
  <level value="INFO" />
  <appender-ref ref="RollingLogFileAppender" />
</root>

31
задан Philipp M 1 October 2013 в 15:12
поделиться

1 ответ

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

Лучше всего включить собственное внутреннее ведение журнала log4net, чтобы выполнить некоторую диагностику и (надеюсь) выяснить причину сбоя.

Итак, в файле конфигурации вашего приложения добавьте:

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
    <appSettings>
        <add key="log4net.Internal.Debug" value="true"/>
    </appSettings>
</configuration>

, который включит внутреннее ведение журнала, которое будет отправлено в System.Diagnostics.Trace , поэтому вы можете добавить:

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

, чтобы записать это в файл.

58
ответ дан 27 November 2019 в 22:11
поделиться
Другие вопросы по тегам:

Похожие вопросы: