LogRecord操作
所有文档

          百度日志服务 BLS

          LogRecord操作

          推送LogRecord

          支持批量推送日志记录到 BLS 平台,日志记录的格式可以是 TEXT,也可以是 JSON 格式。如果是 TEXT,则不对日志进行解析;如果是 JSON 格式,可以自动发现 JSON 字段(仅支持首层字段发现,暂不支持嵌套类型字段的自动发现)。

          如果既想上传日志原文,又想上传解析出的具体字段,可以使用 JSON 格式进行上传,并在 JSON 中包含日志原文(使用 @raw 作为key,日志原文作为 value)。 BLS 解析到 @raw 的时候,会将其内容作为日志原文处理。

          通过以下代码,可以批量推送JSON日志记录到指定日志集的指定日志流中。

          // 推送JSON格式日志记录
          jsonRecords := []api.LogRecord{
            {
              Message:   "{\"body_bytes_sent\":184,\"bytes_sent\":398,\"client_ip\":\"120.193.204.39\"}",
              Timestamp: time.Now().UnixNano() / 1e6,
              Sequence:  1,
            },
            {
              Message:   "{\"body_bytes_sent\":14,\"bytes_sent\":408,\"client_ip\":\"120.193.222.39\"}",
              Timestamp: time.Now().UnixNano() / 1e6,
              Sequence:  2,
            },
          }
          // 指定logRecord类型为JSON,并将日志记录推送到日志集demo中的日志流json-logStream中
          // 若没有该日志流,则自动创建
          err := blsClient.PushLogRecord("demo", "json-logStream", "JSON", jsonRecords)
          if err != nil {
            fmt.Println("Push logRecords failed: ", err)
          } else {
            fmt.Println("Push logRecords success")
          }

          提示:

          • 详细的参数配置及限制条件,可以参考BLS API 文档PushLogRecord

          查看指定LogRecord

          通过以下代码,查看指定日志流中的日志记录,您可以获取最近的日志记录或使用时间范围进行过滤。

          args := &api.PullLogRecordArgs{
            // 必须指定日志流名称
            LogStreamName: "json-logStream",
            // 可选参数
            StartDateTime: "2021-01-01T10:11:44Z",
            EndDateTime:   "2021-12-10T16:11:44Z",
            Limit:         500, // 返回最大条目数
            Marker:        "",  // 指定查看的位置标记
          }
          res, err := blsClient.PullLogRecord("demo", args)
          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 语法

          通过以下代码,您可以在指定日志集中查询满足条件的日志记录。

          args := &api.QueryLogRecordArgs{
            // 必选参数
            Query:         "select count(*)",      // 查询SQL
            StartDateTime: "2021-01-01T10:11:44Z", 
            EndDateTime:   "2021-12-10T16:11:44Z",
            // 可选参数
            LogStreamName: "json-logStream",       // 不指定则在日志集所有日志流中查询
            Limit:         100}
          res, err := blsClient.QueryLogRecord("demo", args)
          if err != nil {
            fmt.Println("Query logRecord failed: ", err)
          } else {
            fmt.Println("LogRecords result: ", res)
          }

          提示:

          • 详细的参数配置及限制条件,可以参考BLS API 文档QueryLogRecord
          上一篇
          LogStream操作
          下一篇
          FastQuery操作