日志记录LogRecord操作
更新时间:2025-03-28
推送日志PushLogRecord
支持批量推送日志记录到 BLS 平台,日志记录的格式可以是 TEXT,也可以是 JSON 格式。如果是 TEXT,则不对日志进行解析;如果是 JSON 格式,可以自动发现 JSON 字段(仅支持首层字段发现,暂不支持嵌套类型字段的自动发现)。
如果既想上传日志原文,又想上传解析出的具体字段,可以使用 JSON 格式进行上传,并在 JSON 中包含日志原文(使用 @raw 作为key,日志原文作为 value)。 BLS 解析到 @raw 的时候,会将其内容作为日志原文处理。
通过以下代码,可以批量推送JSON日志记录到指定日志集的指定日志流中。
Java
1import com.baidubce.auth.DefaultBceCredentials;
2import com.baidubce.services.bls.BlsClient;
3import com.baidubce.services.bls.BlsClientConfiguration;
4import com.baidubce.services.bls.model.logrecord.LogRecord;
5import com.baidubce.services.bls.model.logrecord.LogType;
6import com.baidubce.services.bls.model.logrecord.PushLogRecordRequest;
7
8import java.util.ArrayList;
9import java.util.List;
10
11public class ExamplePushLogRecord {
12 public static void main(String[] args) {
13 String ak = "Your Ak";
14 String sk = "Your Sk";
15 String endpoint = "bls-log.bj.baidubce.com";
16
17 BlsClientConfiguration config = new BlsClientConfiguration();
18 config.setEndpoint(endpoint);
19 config.setCredentials(new DefaultBceCredentials(ak, sk));
20 // 创建BLS客户端
21 BlsClient client = new BlsClient(config);
22
23 PushLogRecordRequest request = new PushLogRecordRequest();
24 List<LogRecord> logRecords = new ArrayList<>();
25 logRecords.add(new LogRecord(1742281309000L, "{\"key1\":\"value\", \"key2\": \"value2\" }"));
26 // 设置目标项目组名称
27 request.setProject("default");
28 // 设置目标日志集名字
29 request.setLogStoreName("logstorename");
30 // 设置日志格式为JSON
31 request.setType(LogType.JSON);
32 // 设置日志
33 request.setLogRecords(logRecords);
34 // 执行推送日志操作
35 client.PushLogRecord(request);
36 }
37}
获取日志记录PullLogRecord
通过以下代码,查看指定日志流中的日志记录,您可以获取最近的日志记录或使用时间范围进行过滤
Java
1package com.baidubce.examples.bls;
2
3import com.baidubce.auth.DefaultBceCredentials;
4import com.baidubce.services.bls.BlsClient;
5import com.baidubce.services.bls.BlsClientConfiguration;
6import com.baidubce.services.bls.model.logrecord.*;
7
8public class ExamplePullLogRecord {
9 public static void main(String[] args) {
10 String ak = "Your Ak";
11 String sk = "Your Sk";
12 String endpoint = "bls-log.bj.baidubce.com";
13
14 BlsClientConfiguration config = new BlsClientConfiguration();
15 config.setEndpoint(endpoint);
16 config.setCredentials(new DefaultBceCredentials(ak, sk));
17 // 创建BLS客户端
18 BlsClient client = new BlsClient(config);
19
20 PullLogRecordRequest request = new PullLogRecordRequest();
21 // 设置目标项目组名称
22 request.setProject("default");
23 // 设置目标日志集名字
24 request.setLogStoreName("logstorename");
25 // 设置日志查询开始时间
26 request.setStartDateTime("2025-03-17T02:04:05Z");
27 // 设置日志查询结束时间
28 request.setEndDateTime("2025-03-17T15:04:05Z");
29 // 设置返回的最大条目数
30 request.setLimit(10);
31 // 执行日志查询操作
32 PullLogRecordResponse resp = client.pullLogRecord(request);
33 System.out.println(resp);
34 }
35}
检索分析日志QueryLogRecord
用户通过提交 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 语法
通过以下代码,您可以在指定日志集中查询满足条件的日志记录。
Java
1import com.baidubce.auth.DefaultBceCredentials;
2import com.baidubce.services.bls.BlsClient;
3import com.baidubce.services.bls.BlsClientConfiguration;
4import com.baidubce.services.bls.model.logrecord.QueryLogRecordRequest;
5import com.baidubce.services.bls.model.logrecord.QueryLogRecordResponse;
6
7public class ExampleQueryLogRecord {
8 public static void main(String[] args) {
9 String ak = "Your Ak";
10 String sk = "Your Sk";
11 String endpoint = "bls-log.bj.baidubce.com";
12
13 BlsClientConfiguration config = new BlsClientConfiguration();
14 config.setEndpoint(endpoint);
15 config.setCredentials(new DefaultBceCredentials(ak, sk));
16 // 创建BLS客户端
17 BlsClient client = new BlsClient(config);
18
19 QueryLogRecordRequest request = new QueryLogRecordRequest();
20 // 设置目标项目组名称
21 request.setProject("default");
22 // 设置目标日志集名字
23 request.setLogStoreName("logstorename");
24 // 设置日志查询开始时间
25 request.setStartDateTime("2025-03-17T02:04:05Z");
26 // 设置日志查询结束时间
27 request.setEndDateTime("2025-03-17T15:04:05Z");
28 // 设置检索语句
29 request.setQuery("match level:info");
30 // 执行日志检索操作
31 QueryLogRecordResponse response = client.queryLogRecord(request);
32 System.out.println(response);
33 }
34}
直方图接口QueryLogHistogram
用户通过提交 Query 检索语句,分析数据量统计直方图,每次只能查询一个日志集的内容。
Query 语句支持三种格式,形如:
- match 检索语句:根据检索条件,返回满足检索条件的日志直方图统计
- SQL 语句:返回全部日志的直方图统计
-
match 检索语句 | SQL 语句:根据检索条件,返回满足检索条件的日志直方图统计 查询相关限制如下:
- 日志集必须开启索引,若未开启索引,直方图查询返回报错
- 查询时间上限60秒,超过60秒未统计出结果会返回报错
检索语法请参考 检索语法
通过以下代码,您可以在指定日志集中查询满足条件的日志。
Java
1import com.baidubce.auth.DefaultBceCredentials;
2import com.baidubce.services.bls.BlsClient;
3import com.baidubce.services.bls.BlsClientConfiguration;
4import com.baidubce.services.bls.model.logrecord.QueryLogHistogramRequest;
5import com.baidubce.services.bls.model.logrecord.QueryLogHistogramResponse;
6
7public class ExampleQueryLogHistogram {
8 public static void main(String[] args) {
9 String ak = "Your Ak";
10 String sk = "Your Sk";
11 String endpoint = "bls-log.bj.baidubce.com";
12
13 BlsClientConfiguration config = new BlsClientConfiguration();
14 config.setEndpoint(endpoint);
15 config.setCredentials(new DefaultBceCredentials(ak, sk));
16 // 创建BLS客户端
17 BlsClient client = new BlsClient(config);
18
19 QueryLogHistogramRequest request = new QueryLogHistogramRequest();
20 // 设置目标项目组名称
21 request.setProject("default");
22 // 设置目标日志集名字
23 request.setLogStoreName("logstorename");
24 // 设置日志查询开始时间
25 request.setStartDateTime("2025-03-17T02:04:05Z");
26 // 设置日志查询结束时间
27 request.setEndDateTime("2025-03-17T15:04:05Z");
28 // 设置检索语句
29 request.setQuery("match level:info");
30 // 执行日志直方图分析操作
31 QueryLogHistogramResponse response = client.queryLogHistogram(request);
32 System.out.println(response);
33 }
34}