Partilhar via


Definição de canais

Os eventos podem ser gravados em canais de log de eventos, arquivos de log de rastreamento de eventos ou ambos. Um canal é basicamente um coletor que recolhe eventos. Se o público-alvo dos seus eventos utilizar consumidores de eventos, como o Visualizador de Eventos do Windows, tem de definir novos canais para recolher os seus eventos ou importar um canal existente definido por outro fornecedor.

Para definir os seus próprios canais, use o elemento canal. Para definir um canal importado, use o elemento importChannel. Você pode especificar até oito canais em qualquer combinação de canais importados ou canais que você definir.

O canal deve ser de um dos quatro tipos: Administração, Operacional, Analítica e Depuração. Cada tipo de canal tem um público-alvo, que determina o tipo de eventos que você grava no canal. Para obter uma descrição de cada tipo, consulte o ChannelType tipo complexo.

Para especificar o canal no qual um evento é gravado, defina o atributo channel da definição de evento com o mesmo valor que o atributo chid da definição de canal. Os eventos só podem ser gravados em um só canal de cada vez, mas também podem ser coletados por até 7 outras sessões ETW ao mesmo tempo.

O exemplo a seguir mostra como importar um canal. Você deve definir os atributos chid e nome. O atributo chid identifica exclusivamente o canal — cada identificador de canal na sua lista de canais deve ser exclusivo. Defina o atributo de nome com o mesmo nome que o provedor usou ao definir o canal.

<instrumentationManifest
    xmlns="http://schemas.microsoft.com/win/2004/08/events" 
    xmlns:win="http://manifests.microsoft.com/win/2004/08/windows/events"
    xmlns:xs="http://www.w3.org/2001/XMLSchema"
    >

    <instrumentation>
        <events>
            <provider name="Microsoft-Windows-SampleProvider" 
                guid="{1db28f2e-8f80-4027-8c5a-a11f7f10f62d}" 
                symbol="PROVIDER_GUID" 
                resourceFileName="<path to the exe or dll that contains the metadata resources>" 
                messageFileName="<path to the exe or dll that contains the string resources>"
                message="$(string.Provider.Name)">

                <channels>
                    <channel chid="c1"
                             name="Microsoft-Windows-BaseProvider/Admin"
                             symbol="CHANNEL_BASEPROVIDER_ADMIN"
                             type="Admin"/>
                </channels>

                . . .

            </provider>
        </events>
    </instrumentation>

    <localization>
        <resources culture="en-US">
            <stringTable>
                <string id="Provider.Name" value="Microsoft-Windows-SampleProvider"/>
            </stringTable>
        </resources>
    </localization>

</instrumentationManifest>

Embora Winmeta.xml defina canais herdados que você pode importar, você não deve usá-los, a menos que esteja dando suporte a consumidores herdados que consomem eventos fora dos canais herdados (por exemplo, Aplicativo ou Sistema). O arquivo Winmeta.xml está incluído no SDK do Windows.

O exemplo a seguir mostra como definir um canal. Você deve definir os atributos chid, nomee tipo. O atributo chid identifica exclusivamente o canal — cada identificador de canal na sua lista de canais deve ser exclusivo. Defina o atributo chid para um valor exclusivo para os canais listados pelo seu provedor; O identificador de canal é referenciado em uma ou mais definições de evento. A convenção para nomear o canal é usar o nome do provedor e o tipo de canal no formato, providername/channeltype.

<instrumentationManifest
    xmlns="http://schemas.microsoft.com/win/2004/08/events" 
    xmlns:win="http://manifests.microsoft.com/win/2004/08/windows/events"
    xmlns:xs="http://www.w3.org/2001/XMLSchema"
    >

    <instrumentation>
        <events>
            <provider name="Microsoft-Windows-SampleProvider"
                guid="{1db28f2e-8f80-4027-8c5a-a11f7f10f62d}"
                symbol="PROVIDER_GUID"
                resourceFileName="<path to the exe or dll that contains the metadata resources>"
                messageFileName="<path to the exe or dll that contains the string resources>"
                message="$(string.Provider.Name)">

                <channels>
                    <importChannel chid="c1"
                                   name="Microsoft-Windows-BaseProvider/Admin"
                                   symbol="CHANNEL_BASEPROVIDER_ADMIN"
                                   />

                    <channel chid="c2"
                             name="Microsoft-Windows-SampleProvider/Operational"
                             type="Operational"
                             enabled="true"
                             />
                </channels>

                . . .

            </provider>
        </events>
    </instrumentation>

    <localization>
        <resources culture="en-US">
            <stringTable>
                <string id="Provider.Name" value="Microsoft-Windows-SampleProvider"/>
            </stringTable>
        </resources>
    </localization>

</instrumentationManifest>