get_task_log
所属分类:运维诊断 · Tool 名称:
get_task_log
功能说明
获取指定批量同步任务的执行日志,支持按日志级别过滤并返回最后 N 行。是排查同步失败原因的关键 Tool——通常先用 get_pipeline_status 或 get_pipeline_exec_history 找到失败任务的 taskId,再用本 Tool 拉取 ERROR 日志定位根因。
输入参数
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
taskId | integer | 是 | 任务 ID(可通过 get_pipeline_exec_history 或 get_pipeline_status 的返回获取) |
logLevel | string | 否 | 日志级别过滤:ALL / ERROR / WARN,默认 ERROR |
limit | integer | 否 | 返回最后几行日志,默认 50 |
输出结果
业务 JSON 直返(非信封结构),字段说明如下:
| 字段 | 类型 | 说明 |
|---|---|---|
taskId | integer | 任务 ID(回显入参) |
logLevel | string | 实际生效的日志级别(回显入参或默认值) |
lines | string[] | 日志行列表(按时间正序,为满足条件的最后 N 行) |
返回示例
{
"taskId": 1023,
"logLevel": "ERROR",
"lines": [
"2026-07-28 08:27:40 [ERROR] com.alibaba.datax.core.job.JobContainer - 运行失败,错误原因:",
"2026-07-28 08:27:40 [ERROR] com.alibaba.datax.common.exception.DataXException: Code:[DBUtilErrorCode-10], Description:[连接数据库失败]. - java.sql.SQLException: Access denied for user 'sync'@'10.1.1.5'"
]
}
错误返回
| 情况 | 表现 |
|---|---|
taskId 为空 | MCP 层 isError: true,内容为参数错误描述文本 |
| 日志文件不存在 | MCP 层 isError: true,内容类似 日志文件不存在: <绝对路径>/full-<taskId>.log |
| 服务端内部异常 | MCP 层 isError: true,内容为通用错误提示文本 |
注意点
- 日志来源:读取的是 TIS 服务端装配任务目录下的日志文件
full-<taskId>.log。任务日志被清理或任务极旧时会出现「日志文件不存在」。 - 过滤方式是子串匹配:
ERROR/WARN级别按「行内包含该级别关键字」过滤,多行堆栈中不含关键字的续行会被过滤掉。需要完整堆栈时请使用logLevel: "ALL"。 - 返回的是尾部窗口:
limit控制返回最后 N 行匹配日志。错误发生在日志中段时,建议增大limit或使用ALL级别获取上下文。 logLevel不区分大小写,但仅接受ALL/ERROR/WARN三个枚举值。
典型用法
在 Hermes 中的提问示例:
mysql2doris_orders 昨天那次失败的同步,把错误日志给我看一下
使用 get_task_log 工具:taskId=1023,logLevel=ERROR,limit=100