Слушатель трассировки базы данных с корпоративной библиотекой 2.0 не входит в базу данных - PullRequest
1 голос
/ 27 октября 2009

Я использую базу данных TraceListener для ведения журнала. Я выполнил CreateLoggingDb.cmd и база данных журналов на месте. Мой web.config выглядит следующим образом.

Когда происходит исключение, я пытаюсь зарегистрировать его, как показано ниже.

ExceptionPolicy.HandleException(ex, "PayrollException");

Код выполняется, но не регистрируется в таблице базы данных. Пожалуйста, дайте мне знать, если настройки в web.config неверны или процедура регистрации должна отличаться.

<configuration>
 <configSections>
  <section name="loggingConfiguration" type="Microsoft.Practices.EnterpriseLibrary.Logging.Configuration.LoggingSettings, Microsoft.Practices.EnterpriseLibrary.Logging, Version=2.0.0.0, Culture=neutral, PublicKeyToken=null"/>
  <section name="exceptionHandling" type="Microsoft.Practices.EnterpriseLibrary.ExceptionHandling.Configuration.ExceptionHandlingSettings, Microsoft.Practices.EnterpriseLibrary.ExceptionHandling, Version=2.0.0.0, Culture=neutral, PublicKeyToken=null"/>
  <section name="dataConfiguration" type="Microsoft.Practices.EnterpriseLibrary.Data.Configuration.DatabaseSettings, Microsoft.Practices.EnterpriseLibrary.Data, Version=2.0.0.0, Culture=neutral, PublicKeyToken=null"/>
 </configSections>
 <loggingConfiguration name="Logging Application Block" tracingEnabled="true" defaultCategory="General" logWarningsWhenNoCategoriesMatch="true">
  <listeners>
   <add databaseInstanceName="LoggingConn" writeLogStoredProcName="WriteLog"
        addCategoryStoredProcName="AddCategory" formatter="Text Formatter"
        listenerDataType="Microsoft.Practices.EnterpriseLibrary.Logging.Database.Configuration.FormattedDatabaseTraceListenerData, Microsoft.Practices.EnterpriseLibrary.Logging.Database, Version=2.0.0.0, Culture=neutral, PublicKeyToken=null"
        traceOutputOptions="None" type="Microsoft.Practices.EnterpriseLibrary.Logging.Database.FormattedDatabaseTraceListener, Microsoft.Practices.EnterpriseLibrary.Logging.Database, Version=2.0.0.0, Culture=neutral, PublicKeyToken=null"
        name="Database Trace Listener" />

  </listeners>
  <formatters>
   <add template="Timestamp: {timestamp}
        Message: {message}
        Category: {category}
        Priority: {priority}
        EventId: {eventid}
        Severity: {severity}
        Title:{title}
        Machine: {machine}
        Application Domain: {appDomain}
        Process Id: {processId}
        Process Name: {processName}
        Win32 Thread Id: {win32ThreadId}
        Thread Name: {threadName}
        Extended Properties: {dictionary({key} - {value}
        )}" type="Microsoft.Practices.EnterpriseLibrary.Logging.Formatters.TextFormatter, Microsoft.Practices.EnterpriseLibrary.Logging, Version=2.0.0.0, Culture=neutral, PublicKeyToken=null" name="Text Formatter"/>
  </formatters>
  <categorySources>
   <add switchValue="All" name="General">
    <listeners>
     <add name="Database TraceListener"/>
    </listeners>
   </add>
  </categorySources>
  <specialSources>
   <allEvents switchValue="All" name="All Events"/>
   <notProcessed switchValue="All" name="Unprocessed Category"/>
   <errors switchValue="All" name="Logging Errors & Warnings">
    <listeners>
     <add name="Database TraceListener"/>
    </listeners>
   </errors>
  </specialSources>
 </loggingConfiguration>
 <exceptionHandling>
  <exceptionPolicies>
   <add name="PayrollException">
    <exceptionTypes>
     <add type="System.Exception, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" postHandlingAction="NotifyRethrow" name="Exception">
      <exceptionHandlers>
       <add exceptionMessage="Payroll Application Exception" wrapExceptionType="Microsoft.Practices.EnterpriseLibrary.ExceptionHandling.ExceptionHandlingException, Microsoft.Practices.EnterpriseLibrary.ExceptionHandling, Version=2.0.0.0, Culture=neutral, PublicKeyToken=null" type="Microsoft.Practices.EnterpriseLibrary.ExceptionHandling.WrapHandler, Microsoft.Practices.EnterpriseLibrary.ExceptionHandling, Version=2.0.0.0, Culture=neutral, PublicKeyToken=null" name="Wrap Handler"/>
      </exceptionHandlers>
     </add>
    </exceptionTypes>
   </add>
  </exceptionPolicies>
 </exceptionHandling>
 <connectionStrings>
  <add name="Conn" connectionString="Database=Payroll;Server=10.135.158.211;User Id=xanoneappusr;Password=vivekm123;" providerName="System.Data.SqlClient"/>
  <add name="LoggingConn" connectionString="Database=Logging;Server=10.135.158.211;User Id=xanoneappusr;Password=vivekm123;" providerName="System.Data.SqlClient"/>
 </connectionStrings>
 <appSettings>
  <add key="PayrollApplication" value="Payroll"/>
 </appSettings>
 <system.web>
  <compilation debug="true" batch="false">
   <assemblies>
    <add assembly="System.Management, Version=2.0.0.0, Culture=neutral, PublicKeyToken=B03F5F7F11D50A3A"/>
    <add assembly="System.Configuration.Install, Version=2.0.0.0, Culture=neutral, PublicKeyToken=B03F5F7F11D50A3A"/></assemblies></compilation>
  <roleManager enabled="true"/>
  <authentication mode="Forms"/>
  <membership>
   <providers>
    <clear/>
    <add connectionStringName="Conn" minRequiredPasswordLength="5" minRequiredNonalphanumericCharacters="0" applicationName="PayrollApplication" name="AspNetSqlMembershipProvider" type="System.Web.Security.SqlMembershipProvider"/>
   </providers>
  </membership>
 </system.web>
</configuration>#x#

1 Ответ

2 голосов
/ 27 октября 2009

Несколько мест, где можно начать поиск:

  1. Использовали ли вы EntLibConfig.exe для создания файла web.config? Это exe, который поставляется с Enterprise Library, вы должны найти его в каталоге Bin установки Enterprise Library в Program Files - он предоставляет вам достаточно интуитивно понятный графический интерфейс для настройки корпоративной библиотеки для приложения: просто укажите его в конфигурации файл для вашего приложения и настроить вещи, которые вы хотите.

  2. Для ведения журнала базы данных вам необходимо настроить строки подключения с помощью блока приложения доступа к данным - для этого вам понадобится еще один раздел в файле конфигурации.

  3. Какой режим аутентификации вы используете для строки подключения к вашей базе данных? Имеет ли удостоверение пользователя, запускающего приложение, доступ на запись в базу данных журналов?

  4. У вас есть другое подключение к базе данных?

Также - если вы используете .Net Framework 3.5, вам следует рассмотреть возможность использования версии 4.1 Корпоративной библиотеки.

РЕДАКТИРОВАТЬ после предоставления файла конфигурации

Глядя на файл конфигурации, который вы вложили (вы, возможно, захотите удалить пароли, кстати), я думаю, что вам не хватает обработчика исключений при ведении журнала - единственный обработчик исключений, который у вас есть, это обработчик исключений переноса. 1027 *

Ниже приведен пример одной из моих политик обработки исключений (из 4.1 Корпоративной библиотеки, но ваша должна быть похожей).

<exceptionPolicies>
  <add name="Data Layer Policy">
    <exceptionTypes>
      <add type="System.Exception, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"
        postHandlingAction="NotifyRethrow" name="Exception">
        <exceptionHandlers>
          <add logCategory="DataLayer" eventId="100" severity="Error" title="Data Layer Exception"
            formatterType="Microsoft.Practices.EnterpriseLibrary.ExceptionHandling.TextExceptionFormatter, Microsoft.Practices.EnterpriseLibrary.ExceptionHandling, Version=4.1.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"
            priority="0" useDefaultLogger="false" type="Microsoft.Practices.EnterpriseLibrary.ExceptionHandling.Logging.LoggingExceptionHandler, Microsoft.Practices.EnterpriseLibrary.ExceptionHandling.Logging, Version=4.1.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"
            name="Logging Handler" />
        </exceptionHandlers>
      </add>
    </exceptionTypes>
  </add>
 </exceptionPolicies>

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

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