这条接口和 服务端事件 里的 JSON 访问记录共用同一套机器人过滤和缓冲,被判为人类的行不会进事件表。密钥范围必须是 logs:write,只有 events:write 不够。
端点
https://app.tapcub.com/api/v1/server/logs/import 需要 API 密钥
导入 combined 日志
Bearer API Key,权限 logs:write。每行是一条 Nginx 或 Apache combined 日志(最长 4000 字符,1–5000 行)。解析失败的行跳过。只保存机器人。Nest 返回 201。错误:400 VALIDATION、401 NO_API_KEY、401 BAD_API_KEY。
请求体 application/json必填
linesstring[]必填响应
- 201解析计数
- 400请求体未通过校验(VALIDATION)
- 401缺少或被拒绝的 API Key(NO_API_KEY、BAD_API_KEY)
响应字段 201
linesintegerparsedintegeracceptedintegerskippedinteger解析成功但不是机器人的行数
项目由密钥上绑定的站点决定,请求体里不要另传项目编号;未绑定项目的用户级密钥会被拒绝。
json
{
"lines": [
"203.0.113.8 - - [02/Oct/2026:08:01:02 +0800] \"GET /robots.txt HTTP/1.1\" 200 120 \"-\" \"Googlebot/2.1\" 0.012"
]
}解析器只认 combined 格式:IP、两个占位字段、方括号里的时间、请求行、三位状态码、字节数、引号里的来源和 User-Agent。行尾可以再跟一个耗时(秒),会换算成毫秒写入 responseTime。时间按日志里的时区偏移解析,月份是英文缩写。User-Agent 写成 - 时按空字符串去做识别。
条数上限 5000 是校验上限,不是建议批量。请求仍受 JSON 体 2 MB 的限制。
响应
json
{ "lines": 1, "parsed": 1, "accepted": 1, "skipped": 0 }lines:请求里的行数。parsed:符合 combined 格式的行数。lines大于parsed只说明格式不对,与机器人过滤无关。accepted:识别为机器人并写入缓冲的行数。skipped:parsed减去accepted,即解析了但没当机器人收下的行。