@prefix schema: <https://schema.org/> .
@prefix skos: <http://www.w3.org/2004/02/skos/core#> .
@prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .
@prefix ks: <https://comcomponent.com/vocab/> .

<https://comcomponent.com/blog/windows-eventlog-etw-structured-logging/#article>
    schema:about <https://comcomponent.com/knowledge/windows-event-log/>, <https://comcomponent.com/knowledge/etw/> ;
    schema:mentions <https://comcomponent.com/knowledge/eventlog-source/>, <https://comcomponent.com/knowledge/eventsource-class/>, <https://comcomponent.com/knowledge/eventpipe/>, <https://comcomponent.com/knowledge/dotnet-trace/>, <https://comcomponent.com/knowledge/ilogger-addeventlog/>, <https://comcomponent.com/knowledge/ilogger-abstraction/>, <https://comcomponent.com/knowledge/structured-logging-template/>, <https://comcomponent.com/knowledge/wevtutil/>, <https://comcomponent.com/knowledge/file-log/>, <https://comcomponent.com/knowledge/event-viewer/>, <https://comcomponent.com/knowledge/dotnet/>, <https://comcomponent.com/knowledge/dotnet-framework/>, <https://comcomponent.com/knowledge/get-winevent/>, <https://comcomponent.com/knowledge/admin-rights/> .

<https://comcomponent.com/knowledge/windows-event-log/> a skos:Concept ;
    skos:prefLabel "Windowsイベントログ"@ja ;
    skos:definition "Application・System・Securityなどのログにアプリケーションやサービスの事象を記録し、イベントビューアーや監視ツールから運用担当者が確認できるWindows標準の記録機構。"@ja ;
    skos:altLabel "Windows Event Log" ;
    skos:altLabel "EventLog" ;
    ks:verifiedBy <https://comcomponent.com/knowledge/event-viewer/> ;
    ks:verifiedBy <https://comcomponent.com/knowledge/wevtutil/> ;
    ks:verifiedBy <https://comcomponent.com/knowledge/get-winevent/> .

<https://comcomponent.com/knowledge/etw/> a skos:Concept ;
    skos:prefLabel "ETW(Event Tracing for Windows)"@ja ;
    skos:definition "OS全体を貫く、カーネルからアプリまで同じ時間軸で記録できるWindows専用のトレース基盤。カーネル全体を対象にするような特権的なセッションの開始・停止には管理者権限が要るが、トレースACLの委譲やPerformance Log Usersへの所属、ユーザーモードのプライベートセッションでは管理者権限なしでも扱える。"@ja ;
    skos:altLabel "Event Tracing for Windows" .

<https://comcomponent.com/knowledge/eventlog-source/> a skos:Concept ;
    skos:prefLabel "イベントソース"@ja ;
    skos:definition "Windowsイベントログへ書き込む際にアプリケーションを識別する登録済みの名前で、コンピューター上で一意である必要がある。"@ja ;
    skos:altLabel "Event Source" ;
    skos:altLabel "EventLog Source" ;
    ks:requires <https://comcomponent.com/knowledge/admin-rights/> .

<https://comcomponent.com/knowledge/admin-rights/> a skos:Concept ;
    skos:prefLabel "管理者権限"@ja ;
    skos:definition "コンピューター全体の設定を変更できる権限。"@ja ;
    skos:altLabel "昇格"@ja .

<https://comcomponent.com/knowledge/ilogger-addeventlog/> a skos:Concept ;
    skos:prefLabel "ILogger + AddEventLogプロバイダー"@ja ;
    skos:definition "Microsoft.Extensions.Logging.EventLogパッケージが提供する、ILoggerのログ出力をWindowsイベントログへ書き込むロギングプロバイダー。"@ja ;
    skos:altLabel "Microsoft.Extensions.Logging.EventLog" ;
    skos:altLabel "AddEventLog" ;
    ks:uses <https://comcomponent.com/knowledge/windows-event-log/> ;
    ks:requires <https://comcomponent.com/knowledge/eventlog-source/> .

<https://comcomponent.com/knowledge/ilogger-abstraction/> a skos:Concept ;
    skos:prefLabel ".NETのILogger"@ja ;
    skos:definition "メッセージテンプレートで構造化ログを書くための.NETのロギング抽象化で、複数のILoggerProviderへ同じログ呼び出しを振り分けられる。"@ja ;
    skos:altLabel "Microsoft.Extensions.Logging.ILogger" ;
    ks:uses <https://comcomponent.com/knowledge/structured-logging-template/> .

<https://comcomponent.com/knowledge/structured-logging-template/> a skos:Concept ;
    skos:prefLabel "構造化ログのメッセージテンプレート"@ja ;
    skos:definition "文字列連結や補間ではなく{PlaceHolder}を含む固定の文字列として書くことで、プレースホルダー名と値の対応関係を構造化データとして保持できるログの書式。"@ja ;
    skos:altLabel "{PlaceHolder}構文"@ja .

<https://comcomponent.com/knowledge/file-log/> a skos:Concept ;
    skos:prefLabel "ファイルログ"@ja ;
    skos:definition "開発者が後から詳細を追うために、Serilog・NLogなどのライブラリや自作ロガーでファイルへ出力するログ。ローテーション設定次第で長期保持しやすい。"@ja ;
    skos:altLabel "自作ファイルロガー"@ja ;
    skos:altLabel "Serilog/NLogのファイルシンク"@ja .

<https://comcomponent.com/knowledge/event-viewer/> a skos:Concept ;
    skos:prefLabel "イベントビューアー"@ja ;
    skos:definition "Windowsイベントログを閲覧するGUIツールで、ソース・レベル・イベントIDによるフィルターや、XPathクエリによるカスタムビューの作成ができる。"@ja ;
    skos:altLabel "eventvwr.msc" ;
    skos:altLabel "Event Viewer" .

<https://comcomponent.com/knowledge/wevtutil/> a skos:Concept ;
    skos:prefLabel "wevtutil"@ja ;
    skos:definition "イベントログの一覧・エクスポート、チャネルのアクセス許可(SDDL)の確認や変更、最大サイズの変更などを行うコマンドラインツール。"@ja ;
    skos:altLabel "wevtutil.exe" .

<https://comcomponent.com/knowledge/get-winevent/> a skos:Concept ;
    skos:prefLabel "Get-WinEvent"@ja ;
    skos:definition "イベントログをフィルターして取得するPowerShellコマンドレット。FilterHashtableでの絞り込みに対応し、NTLM監査ログなど大量のイベントの集計に使う。"@ja .

<https://comcomponent.com/knowledge/eventsource-class/> a skos:Concept ;
    skos:prefLabel ".NETのEventSourceクラス"@ja ;
    skos:definition "継承することでETW(および.NET(Core系)ではEventPipe)向けの独自プロバイダーを定義できる、.NET組み込みの高速構造化ログ機構。"@ja ;
    skos:altLabel "System.Diagnostics.Tracing.EventSource" .

<https://comcomponent.com/knowledge/dotnet-trace/> a skos:Concept ;
    skos:prefLabel "dotnet-trace"@ja ;
    skos:definition "EventPipeを使い、CPUサンプリングやGC・メモリ割り当てなどのイベントを時系列で収集する.NETのトレース収集ツール。"@ja ;
    ks:uses <https://comcomponent.com/knowledge/eventpipe/> .

<https://comcomponent.com/knowledge/eventpipe/> a skos:Concept ;
    skos:prefLabel "EventPipe"@ja ;
    skos:definition ".NETランタイムに組み込まれた、管理者権限が不要で全OSで動くトレース機構。見えるのはマネージドコードとランタイムの範囲に限られ、カーネルイベントやネイティブスタックは取れない。"@ja ;
    ks:uses <https://comcomponent.com/knowledge/eventsource-class/> .

<https://comcomponent.com/knowledge/dotnet/> a skos:Concept ;
    skos:prefLabel ".NET(Core以降)"@ja ;
    skos:definition ".NET Frameworkの後継となる、クロスプラットフォーム対応の.NETランタイム(.NET 5以降)。"@ja ;
    skos:altLabel ".NET Core" ;
    skos:altLabel "モダンな.NET"@ja ;
    ks:uses <https://comcomponent.com/knowledge/eventpipe/> .

<https://comcomponent.com/knowledge/dotnet-framework/> a skos:Concept ;
    skos:prefLabel ".NET Framework"@ja ;
    skos:definition "Windowsのコンポーネントとして扱われ、インストールされているOSのライフサイクルに沿ってサポートされるランタイム。System.Messagingの対象範囲。"@ja ;
    ks:incompatibleWith <https://comcomponent.com/knowledge/eventpipe/> .

[] a rdf:Statement ;
    rdf:subject <https://comcomponent.com/knowledge/windows-event-log/> ;
    rdf:predicate ks:requires ;
    rdf:object <https://comcomponent.com/knowledge/eventlog-source/> ;
    schema:description "System.Diagnostics.EventLogのような従来型のAPIで書き込む場合、事前に登録されたイベントソースを前提とする。マニフェストベースのプロバイダーやETW由来のチャネルはプロバイダー登録で発行するため、この経路には当てはまらない"@ja ;
    ks:evidence <https://learn.microsoft.com/dotnet/api/system.diagnostics.eventlog> ;
    ks:verifiedAt "2026-08-01" ;
    ks:certainty "context-dependent" .

[] a rdf:Statement ;
    rdf:subject <https://comcomponent.com/knowledge/eventlog-source/> ;
    rdf:predicate ks:requires ;
    rdf:object <https://comcomponent.com/knowledge/admin-rights/> ;
    schema:description "Windows Vista以降、イベントソースの登録(CreateEventSource)にはSecurityログを含む全ログの検索が必要なため管理者権限が要る。登録済みソースへの書き込み自体は標準ユーザーでも行える"@ja ;
    ks:evidence <https://learn.microsoft.com/dotnet/api/system.diagnostics.eventlog.createeventsource> ;
    ks:verifiedAt "2026-08-01" ;
    ks:certainty "established" .

[] a rdf:Statement ;
    rdf:subject <https://comcomponent.com/knowledge/ilogger-addeventlog/> ;
    rdf:predicate ks:uses ;
    rdf:object <https://comcomponent.com/knowledge/windows-event-log/> ;
    schema:description "AddEventLogプロバイダーは、ILogger経由のログ呼び出しをWindowsイベントログへ書き込む"@ja ;
    ks:evidence <https://learn.microsoft.com/dotnet/core/extensions/logging/providers> ;
    ks:verifiedAt "2026-08-01" ;
    ks:certainty "established" .

[] a rdf:Statement ;
    rdf:subject <https://comcomponent.com/knowledge/ilogger-addeventlog/> ;
    rdf:predicate ks:requires ;
    rdf:object <https://comcomponent.com/knowledge/eventlog-source/> ;
    schema:description "AddEventLogのSourceNameに指定する名前は、事前にインストーラー側で登録済みである必要があり、省略すると既定で\".NET Runtime\"という汎用名になる"@ja ;
    ks:evidence <https://learn.microsoft.com/dotnet/api/microsoft.extensions.logging.eventlog.eventlogsettings> ;
    ks:verifiedAt "2026-08-01" ;
    ks:certainty "established" .

[] a rdf:Statement ;
    rdf:subject <https://comcomponent.com/knowledge/ilogger-abstraction/> ;
    rdf:predicate ks:uses ;
    rdf:object <https://comcomponent.com/knowledge/structured-logging-template/> ;
    schema:description "ILoggerのメッセージテンプレートは{PlaceHolder}を含む固定文字列として書くことで、プレースホルダー名と値の対応関係を保持する"@ja ;
    ks:evidence <https://learn.microsoft.com/dotnet/core/extensions/logging/overview> ;
    ks:verifiedAt "2026-08-01" ;
    ks:certainty "established" .

[] a rdf:Statement ;
    rdf:subject <https://comcomponent.com/knowledge/ilogger-abstraction/> ;
    rdf:predicate ks:uses ;
    rdf:object <https://comcomponent.com/knowledge/ilogger-addeventlog/> ;
    schema:description "ILoggerProviderの1つとしてAddEventLogを明示的に登録した場合に限り、同じログ呼び出しがWindowsイベントログにも流れる"@ja ;
    ks:evidence <https://learn.microsoft.com/dotnet/core/extensions/logging/providers> ;
    ks:verifiedAt "2026-08-01" ;
    ks:certainty "context-dependent" .

[] a rdf:Statement ;
    rdf:subject <https://comcomponent.com/knowledge/ilogger-abstraction/> ;
    rdf:predicate ks:uses ;
    rdf:object <https://comcomponent.com/knowledge/file-log/> ;
    schema:description "ILoggerProviderにSerilog/NLogなどのファイルシンクを明示的に登録した場合に限り、同じログ呼び出しがファイルログにも詳細に出力される"@ja ;
    ks:evidence <https://learn.microsoft.com/dotnet/core/extensions/logging/overview> ;
    ks:verifiedAt "2026-08-01" ;
    ks:certainty "context-dependent" .

[] a rdf:Statement ;
    rdf:subject <https://comcomponent.com/knowledge/ilogger-abstraction/> ;
    rdf:predicate ks:uses ;
    rdf:object <https://comcomponent.com/knowledge/etw/> ;
    schema:description "Generic Hostの既定のロギングプロバイダーを使う場合に限り、EventSourceも含まれ、ILogger経由のログをEventSourceLoggerProvider経由でETWへも流せる"@ja ;
    ks:evidence <https://learn.microsoft.com/dotnet/core/extensions/logging/providers> ;
    ks:verifiedAt "2026-08-01" ;
    ks:certainty "context-dependent" .

[] a rdf:Statement ;
    rdf:subject <https://comcomponent.com/knowledge/windows-event-log/> ;
    rdf:predicate ks:verifiedBy ;
    rdf:object <https://comcomponent.com/knowledge/event-viewer/> ;
    schema:description "書き込んだイベントログは、イベントビューアーでソース・レベル・イベントIDによるフィルターやXPathのカスタムビューで確認できる"@ja ;
    ks:evidence <https://learn.microsoft.com/dynamics365/commerce/dev-itpro/compare-etw-eventlog> ;
    ks:verifiedAt "2026-08-01" ;
    ks:certainty "established" .

[] a rdf:Statement ;
    rdf:subject <https://comcomponent.com/knowledge/windows-event-log/> ;
    rdf:predicate ks:verifiedBy ;
    rdf:object <https://comcomponent.com/knowledge/wevtutil/> ;
    schema:description "イベントログはwevtutilのeplでのエクスポートやqeでのクエリでコマンドラインから確認・出力できる"@ja ;
    ks:evidence <https://learn.microsoft.com/windows-server/administration/windows-commands/wevtutil> ;
    ks:verifiedAt "2026-08-01" ;
    ks:certainty "established" .

[] a rdf:Statement ;
    rdf:subject <https://comcomponent.com/knowledge/windows-event-log/> ;
    rdf:predicate ks:verifiedBy ;
    rdf:object <https://comcomponent.com/knowledge/get-winevent/> ;
    schema:description "PowerShellのGet-WinEventは-FilterHashtableでログ名やプロバイダー名を指定し、書き込んだイベントを絞り込んで取得できる"@ja ;
    ks:evidence <https://learn.microsoft.com/powershell/module/microsoft.powershell.diagnostics/get-winevent> ;
    ks:verifiedAt "2026-08-01" ;
    ks:certainty "established" .

[] a rdf:Statement ;
    rdf:subject <https://comcomponent.com/knowledge/etw/> ;
    rdf:predicate ks:uses ;
    rdf:object <https://comcomponent.com/knowledge/eventsource-class/> ;
    schema:description ".NETで独自のETWプロバイダーを定義する場合、EventSourceを継承したクラスを実装する。ETWのプロバイダーはネイティブ実装など.NET以外の方法でも定義できる"@ja ;
    ks:evidence <https://learn.microsoft.com/dotnet/core/diagnostics/eventsource> ;
    ks:verifiedAt "2026-08-01" ;
    ks:certainty "context-dependent" .

[] a rdf:Statement ;
    rdf:subject <https://comcomponent.com/knowledge/dotnet-trace/> ;
    rdf:predicate ks:uses ;
    rdf:object <https://comcomponent.com/knowledge/eventpipe/> ;
    schema:description "dotnet-traceが実際に使っているのはETWそのものではなく、.NETランタイム内蔵のEventPipeという別の経路である"@ja ;
    ks:evidence <https://learn.microsoft.com/dotnet/core/diagnostics/dotnet-trace> ;
    ks:verifiedAt "2026-08-01" ;
    ks:certainty "established" .

[] a rdf:Statement ;
    rdf:subject <https://comcomponent.com/knowledge/eventpipe/> ;
    rdf:predicate ks:uses ;
    rdf:object <https://comcomponent.com/knowledge/eventsource-class/> ;
    schema:description "EventPipeはETWと同じようにEventSourceで定義したイベントを収集できる"@ja ;
    ks:evidence <https://learn.microsoft.com/dotnet/core/diagnostics/eventpipe> ;
    ks:verifiedAt "2026-08-01" ;
    ks:certainty "established" .

[] a rdf:Statement ;
    rdf:subject <https://comcomponent.com/knowledge/etw/> ;
    rdf:predicate ks:requires ;
    rdf:object <https://comcomponent.com/knowledge/admin-rights/> ;
    schema:description "ETWの収集開始には管理者権限が必要な場合が多く、これがEventPipe(対象アプリと同じユーザーで実行すれば管理者権限が不要)との違いの1つになっている"@ja ;
    ks:evidence <https://learn.microsoft.com/dotnet/core/diagnostics/eventpipe> ;
    ks:verifiedAt "2026-08-01" ;
    ks:certainty "context-dependent" .

[] a rdf:Statement ;
    rdf:subject <https://comcomponent.com/knowledge/dotnet/> ;
    rdf:predicate ks:requires ;
    rdf:object <https://comcomponent.com/knowledge/windows-event-log/> ;
    schema:description ".NET(Core系)でWindowsイベントログへ書き込むには、.NET FrameworkではBCLに含まれるSystem.Diagnostics.EventLogを、同名のNuGetパッケージとして明示的に参照する必要がある"@ja ;
    ks:evidence <https://learn.microsoft.com/dotnet/api/system.diagnostics.eventlog> ;
    ks:verifiedAt "2026-08-01" ;
    ks:certainty "context-dependent" .

[] a rdf:Statement ;
    rdf:subject <https://comcomponent.com/knowledge/dotnet-framework/> ;
    rdf:predicate ks:incompatibleWith ;
    rdf:object <https://comcomponent.com/knowledge/eventpipe/> ;
    schema:description ".NET FrameworkのEventSourceはETWにのみイベントを送り、.NET(Core系)にのみ存在するEventPipeには対応しない"@ja ;
    ks:evidence <https://learn.microsoft.com/dotnet/core/diagnostics/eventpipe> ;
    ks:verifiedAt "2026-08-01" ;
    ks:certainty "established" .

[] a rdf:Statement ;
    rdf:subject <https://comcomponent.com/knowledge/dotnet/> ;
    rdf:predicate ks:uses ;
    rdf:object <https://comcomponent.com/knowledge/eventpipe/> ;
    schema:description ".NET(Core系)のEventSourceは、ETWに加えてEventPipeにもイベントを送るため、dotnet-traceのようなツールで管理者権限なしに収集できる"@ja ;
    ks:evidence <https://learn.microsoft.com/dotnet/core/diagnostics/eventpipe> ;
    ks:verifiedAt "2026-08-01" ;
    ks:certainty "established" .
