다음을 통해 공유


채널 정의

이벤트는 이벤트 로그 채널, 이벤트 추적 로그 파일 또는 둘 다에 기록할 수 있습니다. 채널은 기본적으로 이벤트를 수집하는 싱크입니다. 이벤트의 대상 대상이 Windows 이벤트 뷰어와 같은 이벤트 소비자를 사용하는 경우 새 채널을 정의하여 이벤트를 수집하거나 다른 공급자가 정의한 기존 채널을 가져와야 합니다.

고유한 채널을 정의하려면 채널 요소를 사용합니다. 가져온 채널을 정의하려면 importChannel 요소를 사용합니다. 정의한 가져온 채널 또는 채널의 조합으로 최대 8개의 채널을 지정할 수 있습니다.

채널은 관리자, 운영, 분석 및 디버그의 네 가지 유형 중 하나여야 합니다. 각 채널 유형에는 채널에 쓰는 이벤트의 유형을 결정하는 대상 그룹을 대상으로 합니다. 각 형식에 대한 설명은 ChannelType 복합 형식을 참조하세요.

이벤트가 기록되는 채널을 지정하려면, 이벤트 정의의 채널 속성을 채널 정의의 채널 ID 속성과 동일한 값으로 설정하십시오. 이벤트는 한 번에 하나의 채널에만 기록할 수 있지만 동시에 최대 7개의 다른 ETW 세션에서 수집할 수도 있습니다.

다음 예제에서는 채널을 가져오는 방법을 보여 줍니다. chid이름 특성을 설정해야 합니다. chid 특성은 채널을 고유하게 식별합니다. 채널 목록의 각 채널 식별자는 고유해야 합니다. 이름 특성을 공급자가 채널을 정의할 때 사용한 것과 동일한 이름으로 설정합니다.

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

Winmeta.xml 가져올 수 있는 레거시 채널을 정의하지만 레거시 채널(예: 애플리케이션 또는 시스템)에서 이벤트를 사용하는 레거시 소비자를 지원하지 않는 한 사용하지 않아야 합니다. Winmeta.xml 파일은 Windows SDK에 포함되어 있습니다.

다음 예제에서는 채널을 정의하는 방법을 보여 줍니다. chid, 이름형식 특성을 설정해야 합니다. chid 특성은 채널을 고유하게 식별합니다. 채널 목록의 각 채널 식별자는 고유해야 합니다. chid 특성을 공급자가 나열하는 채널에 고유한 값으로 설정합니다. 채널 식별자는 하나 이상의 이벤트 정의에서 참조됩니다. 채널 이름을 지정하는 규칙은 공급자 이름 /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>