2012-06-27 4 views
2

Мое приложение использует Log4net для записи в средство просмотра событий. Вот раздел log4net из App.config файла моей программы:Log4net прекратил запись в журнал событий

<log4net> 
    <appender name="EventLogAppender" type="log4net.Appender.EventLogAppender" > 
     <applicationName value="CarSystem" /> 
     <logName value="CarSystemLog" /> 
     <threshold value="DEBUG" /> 
     <layout type="log4net.Layout.PatternLayout"> 
      <conversionPattern value="%date [%thread] %-5level %logger [%ndc] - %message%newline" /> 
     </layout> 
    </appender> 
    <root> 
     <level value="DEBUG" /> 
     <appender-ref ref="EventLogAppender" /> 
    </root> 
</log4net> 

Теперь эти настройки не работали нормально вплоть до около 12:30 часов дня до вчерашнего дня. Внезапно (просто, когда мне нужно просмотреть сообщения в журнале, конечно), он прекратил запись в файл журнала.

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

Почему не записывается log4net в мой файл журнала?

+2

Кто-то или что-то изменил разрешения на папку, в которой записывается файл журнала? –

+0

Не к моему знанию. Это моя рабочая станция для разработки, и я являюсь ее администратором. Я знаю, что не изменил его. Мне нужно будет проверить, не сделал ли кто-нибудь что-то через какой-то инструмент SMS, но давайте притвориться, что ответ отрицательный. –

+0

Ну, если вы можете исключить экологические проблемы, наиболее очевидная вещь, которая приходит на ум, - это необработанное исключение, препятствующее выполнению кода ведения журнала. Учитывая утверждение «только когда мне нужно было пересмотреть ...», это заставляет меня поверить, что что-то происходит не так. Если вы знаете, что код регистрации выполняется, я понятия не имею. –

ответ

2

Я вернулся к документации Log4Net и заметил это заявление:

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

Ну, я имел атрибут XmlConfiguration в моем AssemblyInfo.cs и призыв к LogManager.GetLogger в коде, но это было после вызова, чтобы начать объект мониторинга я добавляемый в конструктор объекта App моего WPF Applicaton в , Я понял, что регистрация остановилась после того, как я добавил этот вызов, когда прочитал это заявление и просмотрел код.

Таким образом, я перевел вызов на LogManager.GetLogger, чтобы быть самым первым утверждением в конструкторе App, и запись началась снова. Hallelieuia!

Спасибо за помощь и предложения.

+0

Не работал для меня – WSK

11

Вместо того, чтобы искать решение, лучше найти причину.

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

Инструкции по его настройке here.

Быстрые шаги:

  • Добавьте это в app.config:
<?xml version="1.0" encoding="utf-8" ?> 
<configuration> 
    <appSettings> 
     <add key="log4net.Internal.Debug" value="true"/> 
    </appSettings> 
</configuration> 
  • Добавить это тоже в конфиге (configuration раздел).
<system.diagnostics> 
    <trace autoflush="true"> 
     <listeners> 
       <add 
       name="textWriterTraceListener" 
       type="System.Diagnostics.TextWriterTraceListener" 
       initializeData="C:\tmp\log4net.txt" /> 
     </listeners> 
    </trace> 
</system.diagnostics> 

Любые проблемы с разрешениями или что будет записываться в файл трассировки.

+0

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

+0

@TonyVitabile: В начале должны быть по крайней мере некоторые строки инициализации. Можете ли вы дважды проверить конфигурацию? –

+0

Да, были линии инициализации. Я хотел сказать, что не было сообщений об ошибках или ничего полезного в выяснении, почему сообщения не отправляются в журнал событий. –

Смежные вопросы