PushLogRecord
更新时间:2024-09-27
描述
支持批量推送日志记录到 BLS 平台,日志记录的格式可以是 TEXT,也可以是 JSON 格式。如果是 TEXT,则不对日志进行解析;如果是 JSON 格式,可以自动发现 JSON 字段(仅支持首层字段发现,暂不支持嵌套类型字段的自动发现)。
如果既想上传解析出的具体字段,又想上传日志原文,,可以使用 JSON 格式进行上传,并在 JSON 中包含日志原文(使用 @raw 作为key,日志原文作为 value)。 BLS 解析到 @raw 的时候,会将其内容作为日志原文处理。
请求
- 请求语法
POST /v1/logstore/{logStoreName}/logrecord?project={project} HTTP/1.1
Host: <Endpoint>
Authorization: <Authorization String>
Content-Type: application/json; charset=utf-8
{
"logStreamName": <logStreamName>,
"type": <type>,
"logRecords": [
{
"message": <message>,
"timestamp": <timestamp>
}
],
"tags": [
{
"k": "<tagKey>",
"v": "<tagValue>"
}
]
}
- 请求头域
除公共请求头域外,无其它特殊头域。
- 请求参数
参数名称 | 类型 | 是否必须 | 参数位置 | 描述 |
---|---|---|---|---|
project | String | No | Query | 日志组名称,默认default |
logStoreName | String | Yes | Path | 日志集名称 |
logStreamName | String | Yes | RequestBody | 日志流名称,长度不能超过 128 字符,包含的字符仅限于:a-z, A-Z, 0-9, '_', '-', '.' |
type | String | No | RequestBody | 数据类型,JSON/TEXT,默认为 TEXT |
logRecords | List<LogRecord> | Yes | RequestBody | 日志记录 |
tags | List<Tag> | No | RequestBody | 日志标签 |
其中,logRecords 数组中的每个 LogRecord 元素结构如下:
字段名称 | 类型 | 描述 |
---|---|---|
message | String | 日志记录的内容 |
timestamp | Int | 日志记录的时间戳,精确到毫秒 |
tags 数组中的每个 Tag 元素结构如下:
字段名称 | 类型 | 描述 |
---|---|---|
k | String | 日志标签的键 |
v | String | 日志标签的值 |
响应
- 响应头域
除公共响应头域外,无其它特殊头域。
- 响应参数
无
错误码
除了通用的错误码,还可能出现如下错误码:
错误码 | 错误消息 | 描述 | HTTP状态码 |
---|---|---|---|
InvalidParameter | Request param invalid: [param] | param 值不合法 | 400 |
InvalidLogRecord | The logRecord is not well-formed: [msg] | msg 具体的错误内容 | 400 |
LogStoreStopped | LogStore stopped | LogStore因为欠费而不能写入了 | 403 |
LogStoreNotFound | LogStore not found | LogStore 不存在 | 404 |
LogStoreNotReady | LogStore not ready | LogStore还在初始化中 | 409 |
RequestLimited | Request frequency is too high, please slow down | 请求频率太快 | 429 |
示例
-
请求示例
- TEXT 类型日志
POST /v1/logstore/demo/logrecord?project=default HTTP/1.1 Host: bls-log.bj.baidubce.com Authorization: bce-auth-v1/18717522d39411e9b721df098b0b908c/2019-09-10T07:00:20Z/1800/content-type;host;x-bce-date;x-bce-request-id/6a7cb6c9ac7ec156c805e55e7d0bcfc443b47feee97cf099c1c0d93a0b4c8304 Content-Type: application/json; charset=utf-8 { "logStreamName": "my-stream", "type": "TEXT", "logRecords": [ { "message": "this is a log record", "timestamp": 1453209131020 } ] }
- TEXT 类型日志,包含标签
POST /v1/logstore/demo/logrecord?project=default HTTP/1.1 Host: bls-log.bj.baidubce.com Authorization: bce-auth-v1/18717522d39411e9b721df098b0b908c/2019-09-10T07:00:20Z/1800/content-type;host;x-bce-date;x-bce-request-id/6a7cb6c9ac7ec156c805e55e7d0bcfc443b47feee97cf099c1c0d93a0b4c8304 Content-Type: application/json; charset=utf-8 { "logStreamName": "my-stream", "type": "TEXT", "logRecords": [ { "message": "this is a log record", "timestamp": 1453209131020 } ], "tags": [ { "k": "hostname", "v": "localhost" } ] }
- JSON 类型日志
POST /v1/logstore/demo/logrecord?project=default HTTP/1.1 Host: bls-log.bj.baidubce.com Authorization: bce-auth-v1/18717522d39411e9b721df098b0b908c/2019-09-10T07:00:20Z/1800/content-type;host;x-bce-date;x-bce-request-id/6a7cb6c9ac7ec156c805e55e7d0bcfc443b47feee97cf099c1c0d93a0b4c8304 Content-Type: application/json; charset=utf-8 { "logStreamName": "my-stream", "type": "JSON", "logRecords": [ { "message": "{\"level\":\"info\", \"status\": 200, \"cost\": 304.87}", "timestamp": 1453209131020 } ] }
- JSON 类型日志,包含日志原文(@raw)
POST /v1/logstore/demo/logrecord?project=default HTTP/1.1 Host: bls-log.bj.baidubce.com Authorization: bce-auth-v1/18717522d39411e9b721df098b0b908c/2019-09-10T07:00:20Z/1800/content-type;host;x-bce-date;x-bce-request-id/6a7cb6c9ac7ec156c805e55e7d0bcfc443b47feee97cf099c1c0d93a0b4c8304 Content-Type: application/json; charset=utf-8 { "logStreamName": "my-stream", "type": "JSON", "logRecords": [ { "message": "{\"@raw\":\"info 200 304.87ms this is a log record.\", \"level\":\"info\", \"status\": 200, \"cost\": 304.87}", "timestamp": 1453209131020 } ] }
- 响应示例
HTTP/1.1 200
Content-Type: application/json; charset=utf-8
X-Bce-Request-Id: 2eeba101-4cc7-4cfe-b5ac-a3be8d060e33
Date: Fri, 10 Apr 2020 04:42:37 GMT