跳到主要内容

日志检索

云开发日志检索功能帮助您快速定位和分析应用运行过程中的问题。支持多种检索方式,包括全文检索、键值检索和模糊匹配,让您能够高效地查找特定日志信息。

开通检索功能​

  1. 登录 云开发平台,选择目标环境。
  2. 在左侧菜单选择 日志监控,在页面顶部 Tab 选择 日志管理。
  3. 开通日志服务后即可开始使用各种检索功能。

日志格式​

日志打印后的格式会自带系统默认的字段,其中默认的系统的字段如下:

字段类型默认说明
levelstring是日志级别(log/info/warn/error)
requestIdstring是请求ID
modulestring是模块名
resourceNamestring是资源名
errorCodestring是错误码
errorMessagestring是错误信息
requeststring是请求参数
responsestring是返回参数
msgstring否简单日志内容
userstring是用户标识
srcstring是system/app
startTimestring是请求开始时间
timeCoststring是请求耗时
servicestring是服务调用

云函数

字段类型默认说明
function_namestring是函数名
request_idstring是请求ID
qualifierstring是版本
提示
  • 用户自定义打印了日志对象内容则会增加自定义的日志字段,并建立 键值索引。
  • 用户自定义日志字段若出现系统默认字段,检索日志 时则会优先自定义日志内容。
  • 限制用户自定义日志字段不能出现以下关键字:"__FILENAME__", "__TIMESTAMP__","__LOGSETID__","__TOPICID__"。

检索方式详解​

1. 全文检索​

全文检索是最常用的日志查找方式,系统会自动将日志内容按分词符拆分为多个词组,您可以输入关键词进行精确或模糊匹配。

使用场景:

  • 查找包含特定错误信息的日志
  • 搜索包含某个函数名或变量名的日志
  • 定位包含特定用户ID的操作记录

示例:

polls # 查找包含 “polls” 的所有日志

全文检索示例

2. 键值检索​

键值检索允许您根据日志的结构化字段进行精确查找。日志内容以 JSON 格式存储,您可以使用 key:value 格式来检索特定字段的内容。

常用字段:

字段说明示例
function_name云函数名称function_name:"user-login"
request_id请求 IDrequest_id:"abc123"
status_code状态码,200 为成功,202 为中间态status_code>200 AND status_code!=202
src日志来源:system 为系统日志,app 为用户代码日志src:app
log日志正文log:"Error"
duration执行耗时(毫秒)duration:>5000
memory函数内存配置memory:512
user_id用户标识user_id:"1307589412"
namespace环境 IDnamespace:"my-env"
qualifier函数版本qualifier:"$LATEST"
retry_num重试次数retry_num=0

使用场景:

  • 查找执行超时的日志:duration:>5000
  • 查找特定函数的日志:function_name:"user-login"
  • 查找特定用户的操作:user_id:"1307589412"

示例:

action: QueryDocument # 查找action为"QueryDocument"的所有日志

全文检索示例

3. 模糊关键字检索​

模糊检索使用通配符来匹配不确定的字符,适用于部分信息已知的场景。

通配符说明​

通配符描述示例匹配结果
*匹配零个或多个任意字符(不支持开头使用)abc*abc 、 abcd 、 abcdef
?匹配单个任意字符ab?cabdc 、 abec 、 ab1c
前缀模糊查询不支持

通配符 * 不支持用在查询开头,请改用后缀模糊或使用完整关键词。

使用场景​

多版本函数查找:

action: Query* # 查找action为"Query"开头的所有日志

模糊检索示例1

高级查询语法​

逻辑运算符​

运算符语法说明示例
与A and B 或 A B返回同时包含A和B的日志error and timeout
或A or B返回包含A或B的日志error or warning
非not B返回不包含B的日志not debug
减A not B返回包含A但不包含B的日志error not timeout

特殊字符处理​

语法说明示例
'text'单引号内的文本作为普通字符处理'and' 查找包含"and"的日志
"text"双引号内的文本作为普通字符处理"error:404" 查找包含"error:404"的日志
\转义字符,转义特殊符号\: 表示冒号字符本身

键值对查询​

key:value # 基本键值对查询
function_name:"user login" # 包含空格的值需要用引号
"error level":high # 包含空格的键名需要用引号

复合查询示例​

错误排查​

status_code>200 AND status_code!=202 # 查找失败的调用日志
function_name:"user-login" AND log:"error" # 查找 user-login 函数中的错误日志

性能分析​

duration:>5000 # 查找执行时间超过 5 秒的日志
src:app AND log:"timeout" # 查找业务代码中的超时日志

用户行为追踪​

user_id:"1307589412" AND log:"login" # 查找特定用户的登录日志
request_id:"abc123" # 查找特定请求的日志

使用 CloudBase CLI 检索日志​

除控制台外,也可以使用 CloudBase CLI 执行同样的检索语句,适合批量查询、脚本化处理或交给 AI 分析:

# 检索日志,-l 控制返回条数,--json 便于脚本消费
tcb logs search -q 'function_name:"user-login" AND log:"error"' -l 20 --json

# 查询云托管日志
tcb logs search --service tcbr -q '"error" AND "timeout"' -l 20 --json

完整的 CLI 参数、字段清单与典型场景请参见 CLI 日志检索。

实用检索场景​

1. 故障排查​

# 查找最近失败的调用
status_code>200 AND status_code!=202

# 查找特定函数的超时错误
function_name:"payment-process" AND log:"timeout"

# 查找业务代码中的异常
src:app AND log:"error"

2. 性能监控​

# 查找慢调用
duration:>3000

# 查找内存异常
log:"out of memory"

# 统计各函数调用次数
src:system | select function_name, count(*) as c group by function_name order by c desc limit 20

3. 用户行为分析​

# 查找特定用户的所有操作
user_id:"1307589412"

# 查找登录相关日志
log:"login" OR log:"logout"

# 查找网关访问日志
logType:accesslog