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