?
This document uses PHP Chinese website manual Release
ETW 日志記錄驅(qū)動(dòng)程序?qū)⑷萜魅罩巨D(zhuǎn)發(fā)為 ETW 事件。ETW 代表 Windows 中的事件跟蹤,是用于在 Windows 中跟蹤應(yīng)用程序的通用框架。每個(gè) ETW 事件都包含一條包含日志及其環(huán)境信息的消息。然后客戶端可以創(chuàng)建一個(gè) ETW 偵聽器來偵聽這些事件。
此日志記錄驅(qū)動(dòng)程序在 Windows 中注冊(cè)的 ETW 提供程序具有以下 GUID 標(biāo)識(shí)符:{a3693192-9ed6-46d2-a981-f8226c8363bd}
??蛻舳藙?chuàng)建一個(gè) ETW 偵聽器并注冊(cè)以偵聽來自日志驅(qū)動(dòng)程序提供者的事件。提供者和監(jiān)聽者的創(chuàng)建順序無關(guān)緊要??蛻艨梢栽谙蛳到y(tǒng)注冊(cè)提供商之前創(chuàng)建自己的 ETW 監(jiān)聽器,并開始監(jiān)聽來自提供商的事件。
以下是如何使用大多數(shù) Windows 安裝中包含的 logman 實(shí)用程序來監(jiān)聽這些事件的示例:
1. logman start -ets DockerContainerLogs -p {a3693192-9ed6-46d2-a981-f8226c8363bd} 0 0 -o trace.etl
1. 使用 etwlogs 驅(qū)動(dòng)程序運(yùn)行您的容器,通過添加--log-driver=etwlogs
到 Docker 運(yùn)行命令并生成日志消息。
2. logman stop -ets DockerContainerLogs
2. 這將生成一個(gè)包含事件的 etl 文件。將此文件轉(zhuǎn)換為可讀格式的一種方法是運(yùn)行:tracerpt -y trace.etl
。
每個(gè) ETW 事件都將包含這種格式的結(jié)構(gòu)化消息字符串:
container_name: %s, image_name: %s, container_id: %s, image_id: %s, source: [stdout | stderr], log: %s
有關(guān)郵件中每個(gè)項(xiàng)目的詳細(xì)信息可以在下面找到:
字段 | 描述 |
---|---|
container_name | 容器名稱在啟動(dòng)時(shí)。 |
image_nameE | 容器圖像的名稱。 |
container_id | 完整的64個(gè)字符的容器 ID。 |
image_id | 容器圖像的完整 ID。 |
source | stdout 或 stderr。 |
log | 容器日志消息。 |
以下是一個(gè)示例事件消息:
container_name: backstabbing_spence,image_name: windowsservercore,container_id: f14bb55aa862d7596b03a33251c1be7dbbec8056bbdead1da8ec5ecebbe29731,image_id: sha256:2f9e19bd998d3565b4f345ac9aaf6e3fc555406239a4fb1b1ba879673713824b,source: stdout,log: Hello world!
客戶端可以解析此消息字符串以獲取日志消息以及其環(huán)境信息。請(qǐng)注意,時(shí)間戳在 ETW 事件中也可用。
注意:此 ETW 提供程序僅發(fā)出消息字符串,而不是特定結(jié)構(gòu)的 ETW 事件。因此,不需要向系統(tǒng)注冊(cè)清單文件來讀取和解釋其 ETW 事件。