Enterprise Library: konfigurace ve více souborech

V enterprise aplikacích je třeba postarat se o věci jako je logování, robustní zracování výjimek nebo o nastavení IoC kontejneru. Pokud nechcete psát kompletně vlastní infrastrukturu pro tyto účely, nabízí se MS Enterprise Library.

Entlib, jak se její jméno obvykle zkracuje, uchovává konfiguraci hlavně v xml souborech a to především v App.config případně Web.config. Konfigurace Entlib může být pěkně rozsáhlá a orientovat se v jednom obrovském xml souboru, to nemusí být jednoduché. Nehledě na typické problémy se systémem správy verzí (svn/mercurial/git/…) V následujícím obrázkovém návodu ukážu jak nastavit Entlib tak, aby konfiguraci brala z více souborů.

Budu předpokládat, že Entlib už je nainstalovaná a potřebné sestavy (assembly) jsou nareferencované. Použijeme grafický konfigurační nástroj, odpovídající akce by bylo možné provést i ruční editací xml souborů.

Pravý klik na web.config - v menu vybrat Edit Enterprise Library V5

V menu Blocks - Add Configuration Block

Mohlo by se zdát, že tím je vše hotové, ale pozor. Ještě je třeba Entlib říct, co bude další konfigurační soubor obsahovat — jaké bloky budou nakonfigurovány v něm. Konfiguraci ostatních bloků bude Entlib stále brát z App.config resp. Web.config.

Jak má vypadat formát souboru entlibconfig.xml? Úplně stejně jako App.config nebo Web.config. Tady je ukázka souboru, který obsahuje pouze konfiguraci logovacího bloku. Tento soubor můžete editovat pomocí grafické utility úplně stejně jako Web.config.

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
    <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" />
    </configSections>
<loggingConfiguration name="Logging Application Block" tracingEnabled="true"
    defaultCategory="General" logWarningsWhenNoCategoriesMatch="true">
    <listeners>
      <add name="Flat File Trace Listener" type="Microsoft.Practices.EnterpriseLibrary.Logging.TraceListeners.FlatFileTraceListener, Microsoft.Practices.EnterpriseLibrary.Logging, Version=5.0.414.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"
        listenerDataType="Microsoft.Practices.EnterpriseLibrary.Logging.Configuration.FlatFileTraceListenerData, Microsoft.Practices.EnterpriseLibrary.Logging, Version=5.0.414.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"
        fileName="trace.log" formatter="Text Formatter" />
    </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: {timestamp}{newline}&#xA;Message: {message}{newline}&#xA;Category: {category}{newline}&#xA;Priority: {priority}{newline}&#xA;EventId: {eventid}{newline}&#xA;Severity: {severity}{newline}&#xA;Title:{title}{newline}"
        name="Text Formatter" />
    </formatters>
    <categorySources>
      <add switchValue="All" name="General">
        <listeners>
          <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="Flat File Trace Listener" />
        </listeners>
      </errors>
    </specialSources>
  </loggingConfiguration>
</configuration>

Post a Comment

Your email is never published nor shared. Required fields are marked *