50 lines
1.6 KiB
Markdown
50 lines
1.6 KiB
Markdown
|
|
# Logs REST API
|
|||
|
|
|
|||
|
|
集中日志写入、检索和统计。基础路径:`/rest/logs`。
|
|||
|
|
|
|||
|
|
## 路由
|
|||
|
|
|
|||
|
|
| 方法 | 路径 | 请求 | 响应数据 |
|
|||
|
|
|---|---|---|---|
|
|||
|
|
| GET | `/rest/logs/ping` | 无 | `{"message":"Pong"}` |
|
|||
|
|
| POST | `/rest/logs/create` | `LogData[]` | 空字符串 |
|
|||
|
|
| POST | `/rest/logs/fetch` | 查询对象 | `{data,total}` |
|
|||
|
|
| POST | `/rest/logs/total` | `{service}` | 按 level 聚合结果 |
|
|||
|
|
|
|||
|
|
## LogData
|
|||
|
|
|
|||
|
|
| 字段 | 类型 | 说明 |
|
|||
|
|
|---|---|---|
|
|||
|
|
| `id` | uint | 日志 ID;创建时通常省略 |
|
|||
|
|
| `created_at` | RFC3339 string | 创建时间;创建时通常省略 |
|
|||
|
|
| `service` | string | 服务名 |
|
|||
|
|
| `op_id` | uint | 操作人 ID |
|
|||
|
|
| `op_name` | string | 操作人名称 |
|
|||
|
|
| `ip` | string | 操作 IP |
|
|||
|
|
| `data_type` | string | 数据类型 |
|
|||
|
|
| `level` | uint | `1=信息`、`2=警告`、`3=错误` |
|
|||
|
|
| `content` | string | 日志内容 |
|
|||
|
|
| `hmac` | string | 完整性校验值 |
|
|||
|
|
| `encry` | bool | 是否加密;不写入数据库字段 |
|
|||
|
|
|
|||
|
|
创建示例:
|
|||
|
|
|
|||
|
|
```json
|
|||
|
|
[
|
|||
|
|
{
|
|||
|
|
"service": "passport",
|
|||
|
|
"op_id": 1001,
|
|||
|
|
"op_name": "client",
|
|||
|
|
"ip": "203.0.113.10",
|
|||
|
|
"data_type": "login",
|
|||
|
|
"level": 1,
|
|||
|
|
"content": "login success"
|
|||
|
|
}
|
|||
|
|
]
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
查询支持 `op_name`、`service`、`op_ip`、`level`、`page`、`size`。当前实现的分页变量未从请求对象赋值,因此实际使用默认 `page=1,size=50`;客户端不要依赖自定义分页,修复后文档需同步更新。
|
|||
|
|
|
|||
|
|
安全限制:当前 `/create` 实现拒绝来自 loopback 和常见私网网段的请求。部署在内网反向代理之后时需要确认 `ClientIP` 配置,否则日志写入可能被拒绝。
|
|||
|
|
|