日志扩展#
本文档描述了 Triton 的日志扩展。日志扩展使客户端能够在 Triton 运行时配置日志设置。Triton 在其服务器元数据的扩展字段中报告“logging”。
HTTP/REST#
在本文档中显示的所有 JSON 模式中,$number
、$string
、$boolean
、$object
和 $array
指的是基本 JSON 类型。#optional 表示可选的 JSON 字段。
Triton 在以下 URL 公开日志记录端点。客户端可以使用 HTTP GET 请求来检索当前的日志设置。HTTP POST 请求将修改日志设置,并且端点将在成功时返回更新后的日志设置,或者在失败的情况下返回错误。
GET v2/logging
POST v2/logging
日志设置响应 JSON 对象#
成功的日志设置请求由 200 HTTP 状态代码指示。响应对象(标识为 $log_setting_response
)在每个成功的日志设置请求的 HTTP 正文中返回。
$log_setting_response =
{
$log_setting, ...
}
$log_setting = $string : $string | $boolean | $number
每个 $log_setting
JSON 描述一个“名称”/“值”对,其中“名称”是日志设置的 $string
表示形式,而“值”是设置值的 $string
、$bool
或 $number
表示形式。目前,定义了以下日志设置
“log_file”:一个
$string
日志文件位置,日志输出将保存到该位置。如果为空,则日志输出将流式传输到控制台。“log_info”:一个
$boolean
参数,用于控制 Triton 服务器是否记录 INFO 级别消息。“log_warning”:一个
$boolean
参数,用于控制 Triton 服务器是否记录 WARNING 级别消息。“log_error”:一个
$boolean
参数,用于控制 Triton 服务器是否记录 ERROR 级别消息。“log_verbose_level”:一个
$number
参数,用于控制 Triton 服务器是否输出不同程度的详细消息。此值可以是任何 >= 0 的整数。如果“log_verbose_level”为 0,则将禁用详细日志记录,并且 Triton 服务器将不输出详细消息。如果“log_verbose_level”为 1,则 Triton 服务器将输出级别 1 的详细消息。如果“log_verbose_level”为 2,则 Triton 服务器将输出级别 <= 2 的所有详细消息,依此类推。尝试将“log_verbose_level”设置为小于 0 的数字将导致错误。“log_format”:一个
$string
参数,用于控制 Triton 服务器日志消息的格式。目前有两种格式:“default”和“ISO8601”。
日志设置响应 JSON 错误对象#
失败的日志设置请求将由 HTTP 错误状态(通常为 400)指示。HTTP 正文将包含一个 $log_setting_error_response
对象。
$log_setting_error_response =
{
"error": $string
}
“error”:错误的描述性消息。
日志设置请求 JSON 对象#
日志设置请求是通过 HTTP POST 发送到日志记录端点进行的。在相应的响应中,HTTP 正文包含响应 JSON。成功的请求由 200 HTTP 状态代码指示。
请求对象(标识为 $log_setting_request
)必须在 HTTP 正文中提供。
$log_setting_request =
{
$log_setting, ...
}
当收到 $log_setting
JSON(如上定义)时,仅更新指定的设置。目前,可以更新以下日志设置(如上所述)
“log_info”
“log_warning”
“log_error”
“log_verbose_level”
“log_format”
示例用法#
可以使用 curl 库通过以下方式调用日志记录协议扩展(假设 Triton 服务器在 localhost:8000
上运行)
curl -s -w '\n%{http_code}\n' -d '{"log_verbose_level":1}' -X POST localhost:8000/v2/logging
此命令应返回一个 $log_setting_response
JSON 对象,其格式如下
{"log_file":"","log_info":true,"log_warnings":true,"log_errors":true,"log_verbose_level":1,"log_format":"default"}
200
请注意,即使 log_verbose_level
是唯一被修改的参数,也会返回所有参数字段的当前值。
GRPC#
对于日志记录扩展,Triton 实现了以下 API
service GRPCInferenceService
{
…
// Update and get the log setting of the Triton server.
rpc LogSettings(LogSettingsRequest)
returns (LogSettingsResponse) {}
}
日志设置 API 返回最新的日志设置。错误由请求返回的 google.rpc.Status
指示。OK 代码表示成功,其他代码表示失败。日志设置的请求和响应消息是
message LogSettingsRequest
{
message SettingValue
{
oneof parameter_choice
{
// bool param option
bool bool_param = 1;
// uint32 param option
uint32 uint32_param = 2;
// string param option
string string_param = 3;
}
}
// The new setting values to be updated.
// Unspecified settings will remain unchanged.
map<string, SettingValue> settings = 1;
}
message LogSettingsResponse
{
message SettingValue
{
oneof parameter_choice
{
// bool param option
bool bool_param = 1;
// uint32 param option
uint32 uint32_param = 2;
// string param option
string string_param = 3;
}
}
// The latest log settings values.
map<string, SettingValue> settings = 1;
}
日志记录格式#
日志记录扩展提供两种日志记录格式。这些格式具有一组通用的字段,但在日志条目的时间戳表示方式上有所不同。默认情况下,消息根据 JSON 编码规则进行序列化。可以通过在启动服务器时将环境变量 TRITON_SERVER_ESCAPE_LOG_MESSAGES 设置为“0”来禁用此行为,但无法通过日志记录扩展进行更改。
日志条目可以是单行或多行。多行条目有一个可选的标题,后跟对象(例如表格或 protobuf 消息)的结构化表示形式。当下一个日志条目开始时,多行条目结束。
TRITONSERVER_LOG_DEFAULT
单行条目#
<level><month><day><hour>:<min>:<sec>.<usec> <pid> <file>:<line>] <message>
示例
I0520 20:03:25.829575 3355 model_lifecycle.cc:441] "AsyncLoad() 'simple'"
多行条目#
<level><month><day><hour>:<min>:<sec>.<usec> <pid> <file>:<line>] <heading>
<object>
示例
I0520 20:03:25.912303 3355 server.cc:676]
+--------+---------+--------+
| Model | Version | Status |
+--------+---------+--------+
| simple | 1 | READY |
+--------+---------+--------+
TRITONSERVER_LOG_ISO8601
单行条目#
<year>-<month>-<day>T<hour>:<min>:<sec>Z <level> <pid> <file>:<line>] <message>
示例
2024-05-20T20:03:26Z I 3415 model_lifecycle.cc:441] "AsyncLoad() 'simple'"
多行条目#
<year>-<month>-<day>T<hour>:<min>:<sec>Z <level> <pid> <file>:<line>] <heading>
<object>
示例
2024-05-20T20:03:26Z I 3415 server.cc:676]
+--------+---------+--------+
| Model | Version | Status |
+--------+---------+--------+
| simple | 1 | READY |
+--------+---------+--------+