Sdílet prostřednictvím


Definování kanálů

Události se dají zapisovat do kanálů protokolu událostí, souborů protokolu trasování událostí nebo do obou. Kanál je v podstatě jímka, která shromažďuje události. Pokud cílová cílová skupina pro vaše události používá příjemce událostí, jako je Prohlížeč událostí systému Windows, musíte definovat nové kanály pro shromažďování událostí nebo import existujícího kanálu, který definoval jiný zprostředkovatel.

Pokud chcete definovat vlastní kanály, použijte prvek kanálu. K definování importovaného kanálu použijte element importChannel. V libovolné kombinaci importovaných kanálů nebo kanálů, které definujete, můžete zadat až osm kanálů.

Kanál musí mít jeden ze čtyř typů: Administrační, Provozní, Analytický a Ladění. Každý typ kanálu má zamýšlenou cílovou skupinu, která určuje typ událostí, které do kanálu napíšete. Popis každého typu najdete v ChannelType komplexní typ.

Pokud chcete určit kanál, do kterého je událost zapsána, nastavte atribut kanálu v definici události na stejnou hodnotu, jako má atribut chid v definici kanálu. Události lze zapsat pouze do jednoho kanálu najednou, ale současně je může shromažďovat až sedm dalších relací trasování událostí ve Windows.

Následující příklad ukazuje, jak importovat kanál. Musíte nastavit atributy dítě a jméno. Atribut chid jednoznačně identifikuje kanál – každý identifikátor kanálu v seznamu kanálů musí být jedinečný. Nastavte název atributu na stejný název, který poskytovatel použil při definování kanálu.

<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>

I když Winmeta.xml definuje starší kanály, které můžete importovat, neměli byste je používat, pokud nepodporujete starší uživatele, kteří využívají události ze starších kanálů (například Aplikace nebo Systém). Soubor Winmeta.xml je součástí sady Windows SDK.

Následující příklad ukazuje, jak definovat kanál. Je nutné nastavit atributy: chid, název, a typ. Atribut chid jednoznačně identifikuje kanál – každý identifikátor kanálu v seznamu kanálů musí být jedinečný. Nastavte atribut chid na hodnotu, která je jedinečná pro kanály, které váš poskytovatel vypíše; identifikátor kanálu se odkazuje v jedné nebo více definicích události. Konvence pro pojmenování kanálu je použít název poskytovatele a typ kanálu ve formuláři, název poskytovatele/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>