Monday, February 6, 2006

BizTalk 2004: Event Log Adapter

Tive uma solicitação de um cliente a perguntar sobre a melhor forma de copiar erros registados no event log (por acaso gerados pelo BizTalk), para uma base de dados remota que é monitorada por outras ferramentas. A principal opção em cima da mesa era desenvolver um serviço windows para monitorar o event log, e depois fazer essa gravação. A "melhor" solução, no entanto, consegue fazer-se sem escrever código, e usando o próprio BizTalk.


Um dos vários desenvolvimentos nascidos na comunidade BizTalk é um Event Log Adapter, que permite criar uma Receive Location a apontar para um Event Log. Esta receive location faz um "polling" regular e publica na MessageBox os eventos novos que encontrar, devidamente serializados em XML. O link é este: http://www.gotdotnet.com/workspaces/workspace.aspx?id=26102375-6bdf-47f7-ace9-33a2d34fc582


Este adapter, cuja configuração mostro de seguida, permite especificar qual o servidor de onde queremos ler, de que Log (Ex: Application, Security, etc.), com que periodicidade, e até um filtro em XPath.


Usando este adapter, resolve-se rapidamente minutos o problema, recorrendo apenas a componentes de "messaging":


1. Criar um Receive Port, no qual se criam tantas Receive Locations quantos os logs que quisermos monitorar. Um exemplo de XML que o Adapter produz é:


<?xml version="1.0" encoding="utf-8"?>
<EventLogEntry index="837" eventID="12588665" entryType="Error" source="BizTalk Server 2004" categoryNumber="BizTalk Server 2004" timeGenerated="03-02-2006 21:46:07" timeWritten="03-02-2006 21:46:07" userName="" machineName="myserver" eventLogName="Application" eventLogMachine="myserver" xmlns="
http://tempuri.org/EventLogAdapter">
<Message>(detalhe da mensagem)</Message>
<Data></Data>
</EventLogEntry>


2. Criar um Send Port, com um filtro a indicar que queremos apanhar todas as mensagens originadas no Receive Port acima. Este Send Port utiliza o SQL Adapter, incluído "out-of-the-box" no BizTalk 2004, para escrever para a base de dados pretendida.


Voilá. Outro cliente satisfeito. :-)


jota

No comments:

Post a Comment