Partilhar via


Definindo 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 coleta eventos. Se o público-alvo dos eventos usar consumidores de eventos como o windows Visualizador de Eventos, você deverá definir novos canais para coletar seus eventos ou importar um canal existente definido por outro provedor.

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

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

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

O exemplo a seguir mostra como importar um canal. Você deve definir os atributos chid e name . O atributo chid identifica exclusivamente o canal — cada identificador de canal na sua lista de canais deve ser exclusivo. Defina o atributo name como o mesmo nome que o provedor usou quando definiu 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 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, name e type . O atributo chid identifica exclusivamente o canal — cada identificador de canal na sua lista de canais deve ser exclusivo. Defina o atributo chid como um valor exclusivo para os canais que seu provedor lista; o identificador de canal é referenciado em uma ou mais de suas definições de evento. A convenção para nomear o canal é usar o nome do provedor e o tipo de canal no formulário, 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>