Menentukan Saluran

Peristiwa dapat ditulis ke saluran log peristiwa, file log pelacakan peristiwa, atau keduanya. Saluran pada dasarnya adalah sink yang mengumpulkan peristiwa. Jika audiens target untuk peristiwa Anda menggunakan konsumen peristiwa seperti Pemantau Peristiwa Windows, Anda harus menentukan saluran baru untuk mengumpulkan peristiwa Anda atau mengimpor saluran yang sudah ada yang ditentukan penyedia lain.

Untuk menentukan saluran Anda sendiri, gunakan elemen channel . Untuk menentukan saluran yang diimpor, gunakan elemen importChannel . Anda dapat menentukan hingga delapan saluran dalam kombinasi saluran atau saluran yang diimpor yang Anda tentukan.

Saluran harus terdiri dari salah satu dari empat jenis: Admin, Operasional, Analitik, dan Debug. Setiap jenis saluran memiliki audiens yang dimaksudkan, yang menentukan jenis peristiwa yang Anda tulis ke saluran. Untuk deskripsi setiap jenis, lihat jenis kompleks ChannelType .

Untuk menentukan saluran tempat peristiwa ditulis, atur atribut saluran definisi peristiwa ke nilai yang sama dengan atribut chid definisi saluran. Peristiwa hanya dapat ditulis ke satu saluran sekaligus, tetapi juga dapat dikumpulkan hingga 7 sesi ETW lainnya secara bersamaan.

Contoh berikut menunjukkan cara mengimpor saluran. Anda harus mengatur atribut chid dan name . Atribut chid secara unik mengidentifikasi saluran—setiap pengidentifikasi saluran dalam daftar saluran Anda harus unik. Atur atribut name ke nama yang sama dengan yang digunakan penyedia saat menentukan saluran.

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

Meskipun Winmeta.xml mendefinisikan saluran warisan yang dapat Anda impor, Anda tidak boleh menggunakannya kecuali Anda mendukung konsumen warisan yang mengonsumsi peristiwa dari saluran warisan (misalnya, Aplikasi atau Sistem). File Winmeta.xml disertakan dalam Windows SDK.

Contoh berikut menunjukkan cara menentukan saluran. Anda harus mengatur atribut chid, name, dan type . Atribut chid secara unik mengidentifikasi saluran—setiap pengidentifikasi saluran dalam daftar saluran Anda harus unik. Atur atribut chid ke nilai yang unik untuk saluran yang dicantumkan penyedia Anda; pengidentifikasi saluran dirujuk dalam satu atau beberapa definisi peristiwa Anda. Konvensi untuk menamai saluran adalah menggunakan nama penyedia dan jenis saluran dalam formulir, jenis saluran nama/ penyedia.

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