Microsoft Enterprise Library 4.1 Не удается войти в систему в Windows XP SP3

У меня есть приложение, которое использует блок приложения Ent Lib 4.1 logging. Это приложение работает на XP SP2+, Windows Vista и Windows 7.

Большую часть времени моя регистрация работает нормально. (Как правило, он предназначен для прослушивателя трассировки журнала событий.) Иногда, и я не уверен, что это вызывает, машина с Windows XP просто перестает регистрировать. Я попытался добавить прослушиватель трассировки плоского файла, чтобы увидеть, была ли проблема с журналом событий, но плоский файл тоже не работает. Перезагрузка тоже не исправляет.

На всех машинах, где он выходит из строя, он работал ранее. Он также кажется изолированным для Windows XP SP2/SP3. Это не происходит на Vista или 7.

Идеи?

Обновление: я попытался удалить всех слушателей следа кроме плоского файла, и это работало. Таким образом, проблема связана с прослушивателем трассировки журнала событий, и, по всей видимости, все, что происходит, приводит к тому, что Ent Lib полностью не может что-либо регистрировать, в том числе ошибки, касающиеся процесса регистрации.

2 ответа

Решение

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

ни одна запись в журнале не будет записана для любого слушателя трассировки.

Это, с другой стороны, не совсем верно. Да, все обычные слушатели трассировки не будут обработаны, но все еще есть ошибки Special Source. Я бы порекомендовал установить это в свой собственный файл (по моему опыту Event Log даст больше проблем с разрешениями и т. Д.), Чтобы фиксировать любые ошибки регистрации:

<specialSources>
  <errors switchValue="All" name="Logging Errors &amp; Warnings">
    <listeners>
      <add name="Error Flat File Destination" />
    </listeners>
  </errors>
</specialSources>

Если бы он был настроен с надлежащими разрешениями, а диск не был заполнен (и т. Д.), Вы бы увидели ошибку в этом файле журнала вместе с исходной информацией:

Message: Tracing to LogSource 'Your Event Source' failed. Processing for other sources will continue. See summary information below for more information. Should this problem persist, stop the service and check the configuration file(s) for possible error(s) in the configuration of the categories and sinks.

Summary for Enterprise Library Distributor Service:
======================================
[Original Log Entry]

Exception Information Details:
====================================== 
Exception Type: System.ComponentModel.Win32Exception
NativeErrorCode: 1502 
ErrorCode: -2147467259 
Message: The event log file is full 
Data: System.Collections.ListDictionaryInternal
TargetSite: Void InternalWriteEvent(UInt32, UInt16, System.Diagnostics.EventLogEntryType, System.String[], Byte[], System.String) 
HelpLink: NULL 
Source: System

Таким образом, вы получите исходную информацию журнала, которую вы сможете извлечь и вручную вставить в любую историю журнала, которую вы сохраняете (например, отчеты, анализ). Плюс в качестве бонуса вы получаете информацию о том, почему запись в журнале не может быть записана, чтобы ее можно было (надеюсь!) Исправить.

Я понял. Очевидно, что в случае сбоя одного прослушивателя трассировки для категории запись в журнале не будет записана для прослушивателя трассировки. Другими словами, если прослушиватель трассировки журнала событий дает сбой, прослушиватель трассировки плоского файла никогда не будет вызван.

В моем случае журнал событий был полон на компьютере с XP. Это вызывало сбой прослушивателя трассировки журнала событий.

Другие вопросы по тегам