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

LEAVE A REPLY

Please enter your comment!
Please enter your name here