Ведение журнала базы данных Enterprise Library 5 в неструктурированный файл работает, а база данных — нет.

Я пытаюсь изменить существующую систему ведения журналов Enterprise Library 5, чтобы использовать базу данных, а не поставщик плоских файлов. Я использовал инструмент конфигурации для создания соответствующих разделов конфигурации и добавил их в свой файл конфигурации, но похоже, что он не использует базу данных, хотя плоский файл все еще обновляется. Моя конфигурация выглядит так:

<configSections>
    <section name="loggingConfiguration" type="Microsoft.Practices.EnterpriseLibrary.Logging.Configuration.LoggingSettings, Microsoft.Practices.EnterpriseLibrary.Logging, Version=5.0.414.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" requirePermission="true" />

    <section name="dataConfiguration" type="Microsoft.Practices.EnterpriseLibrary.Data.Configuration.DatabaseSettings, Microsoft.Practices.EnterpriseLibrary.Data, Version=5.0.414.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" requirePermission="true" />
  </configSections>

 <appSettings>
    <add key="loggingenabled" value="true" />
   <connectionStrings>
    <add name="Localhost" connectionString="Database=Logging;Server=localhost;Integrated Security=SSPI"
        providerName="System.Data.SqlClient" />
  </connectionStrings>

 <loggingConfiguration name="" tracingEnabled="true" defaultCategory="General">
    <listeners>
      <add name="Flat File Trace Listener" type="Microsoft.Practices.EnterpriseLibrary.Logging.TraceListeners.RollingFlatFileTraceListener, Microsoft.Practices.EnterpriseLibrary.Logging, Version=5.0.414.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"
        listenerDataType="Microsoft.Practices.EnterpriseLibrary.Logging.Configuration.RollingFlatFileTraceListenerData, Microsoft.Practices.EnterpriseLibrary.Logging, Version=5.0.414.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"
        fileName="c:\logs\Service.log" header="" footer="" formatter="Text Formatter" rollSizeKB="102400" timeStampPattern="yyyy-MM-dd" rollFileExistsBehavior="Increment" rollInterval="None" />
      <add name="Database Trace Listener" type="Microsoft.Practices.EnterpriseLibrary.Logging.Database.FormattedDatabaseTraceListener, Microsoft.Practices.EnterpriseLibrary.Logging.Database, Version=5.0.414.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"
          listenerDataType="Microsoft.Practices.EnterpriseLibrary.Logging.Database.Configuration.FormattedDatabaseTraceListenerData, Microsoft.Practices.EnterpriseLibrary.Logging.Database, Version=5.0.414.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"
          databaseInstanceName="Localhost" writeLogStoredProcName="WriteLog"
          addCategoryStoredProcName="AddCategory" formatter="Text Formatter"
          traceOutputOptions="DateTime, ProcessId, ThreadId" />

    </listeners>
    <formatters>
      <add type="Microsoft.Practices.EnterpriseLibrary.Logging.Formatters.TextFormatter, Microsoft.Practices.EnterpriseLibrary.Logging, Version=5.0.414.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"
           template="{timestamp(dd/MM/yyyy HH:mm:ss.fff)} {win32ThreadId} {category} {severity} {message}"
           name="Text Formatter" />
    </formatters>
    <categorySources>
      <add switchValue="All" name="General">
        <listeners>

          <add name="Database Trace Listener" />
          <add name="Flat File Trace Listener" />
        </listeners>
      </add>
    </categorySources>
    <specialSources>
      <allEvents switchValue="All" name="All Events" />
      <notProcessed switchValue="All" name="Unprocessed Category" />
      <errors switchValue="All" name="Logging Errors &amp; Warnings">
        <listeners>

          <add name="Database Trace Listener" />
          <add name="Flat File Trace Listener" />
        </listeners>
      </errors>
    </specialSources>
  </loggingConfiguration>

В приложении или базе данных не отображаются сообщения об ошибках, но база данных пуста, и нет никаких признаков попытки подключения.


person glenatron    schedule 24.01.2013    source источник


Ответы (1)


Если честно, я не совсем уверен, что я сделал, чтобы решить эту проблему, но мне удалось дойти до того, что я выдавил сообщение об ошибке из Enterprise Library. Оказалось, что, хотя я скомпилировал библиотеку ведения журналов со ссылками на Microsoft.Practices.EnterpriseLibrary.Logging.Database, мне также пришлось добавить ту же ссылку на службу WCF, которая вызывала эту библиотеку — одной ссылки на нее из системы ведения журналов было недостаточно.

person glenatron    schedule 24.01.2013