LogRecord操作
更新时间:2024-09-11
推送LogRecord
支持批量推送日志记录到 BLS 平台,日志记录的格式可以是 TEXT,也可以是 JSON 格式。如果是 TEXT,则不对日志进行解析;如果是 JSON 格式,可以自动发现 JSON 字段(仅支持首层字段发现,暂不支持嵌套类型字段的自动发现)。
如果既想上传日志原文,又想上传解析出的具体字段,可以使用 JSON 格式进行上传,并在 JSON 中包含日志原文(使用 @raw 作为key,日志原文作为 value)。 BLS 解析到 @raw 的时候,会将其内容作为日志原文处理。
通过以下代码,可以批量推送JSON日志记录到指定日志集的指定日志流中。
// 推送JSON格式日志记录
pushLogRecordRequest := PushLogRecordRequest{
Project: "default",
LogStoreName: "test,
LogStreamName: "json-logStream",
LogType: "JSON",
LogRecords: []api.LogRecord{
{
Message: "{\"@raw\": \"raw text\", \"level\": \"info\"}",
Timestamp: time.Now().UnixMilli(),
},
},
}
// 指定logRecord类型为JSON,并将日志记录推送到日志集demo中的日志流json-logStream中
// 若没有该日志流,则自动创建
err = BLS_CLIENT.PushLogRecordV2(pushLogRecordRequest)
if err != nil {
fmt.Println("Push logRecords failed: ", err)
} else {
fmt.Println("Push logRecords success")
}
提示:
- 详细的参数配置及限制条件,可以参考BLS API 文档PushLogRecord
查看指定LogRecord
通过以下代码,查看指定日志流中的日志记录,您可以获取最近的日志记录或使用时间范围进行过滤
pullLogRecordRequest := PullLogRecordRequest{
Project: "default",
LogStoreName: "test",
StartDateTime: time.Now().Add(-10 * time.Minute).UTC().Format("2006-01-02T15:04:05Z"),
EndDateTime: time.Now().UTC().Format("2006-01-02T15:04:05Z"),
}
res, err := BLS_CLIENT.PullLogRecordV2(pullLogRecordRequest)
if err != nil {
fmt.Println("Pull logRecord failed: ", err)
} else {
fmt.Println("LogRecords result: ", res)
}
提示:
- 详细的参数配置及限制条件,可以参考BLS API 文档PullLogRecord
查询指定LogRecord
用户通过提交 Query 检索或分析指定日志集中的数据,每次只能查询一个日志集的内容。
Query 语句支持三种格式,形如:
match 检索语句
:需要开启全文索引或者字段索引,可以根据条件检索日志内容,例如match method:GET and status >= 400
SQL语句
:执行 SQL 语句,例如select * limit 10
match 检索语句 | SQL 语句
:需要开启全文索引或者字段索引,在符合检索条件的结果集上执行 SQL 语句,检索语句和 SQL 语句通过竖线分隔,例如match method:GET and status >= 400 | select host, count(*) group by host
查询相关限制如下:
- 每个账户支持最多的查询并发数是 15 个
- 限制返回的结果集大小不超过 1MB 或 1000 条记录。
检索语法请参考 检索语法
SQL 语句中可以不包括 from 子句,语法详情可以参考 SQL 语法
通过以下代码,您可以在指定日志集中查询满足条件的日志记录。
queryLogRecordRequest := QueryLogRecordRequest{
Project: "default",
LogStoreName: "test",
Query: "match *",
StartDateTime: time.Now().Add(-20 * time.Second).UTC().Format("2006-01-02T15:04:05Z"),
EndDateTime: time.Now().UTC().Format("2006-01-02T15:04:05Z"),
}
res, err := BLS_CLIENT.QueryLogRecordV2(queryLogRecordRequest)
if err != nil {
fmt.Println("Query logRecord failed: ", err)
} else {
fmt.Println("LogRecords result: ", res)
}
提示:
- 详细的参数配置及限制条件,可以参考BLS API 文档QueryLogRecord