Microsoft Enterprise Library 4.1 Ошибка регистрации в Windows XP SP3 - PullRequest
2 голосов
/ 24 января 2011

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

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

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

Идеи?

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

Ответы [ 2 ]

3 голосов
/ 25 января 2011

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

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

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

<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

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

1 голос
/ 24 января 2011

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

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

...