# 服务日志

服务日志分为上线后（服务运行）、服务上线前（部署构建）两种日志。

1. 服务运行日志可在「服务管理 - 日志」中查询，也可以在某个具体服务中的「日志」栏中看到当前服务的日志
2. 服务上线前的日志统一在具体服务中「部署发布」栏历史版本-发布详情中查看。

## 服务运行日志

微信云托管将根据某个具体服务中「服务设置 - 日志采集路径」中填写的路径进行服务日志采集上报，并按照时间顺序（可升降序）展示在此服务的「日志」栏中。

![](https://res8.wxqcloud.qq.com.cn/wxdoc/cbaba294-4f7e-4272-ba89-24035e114712.png)

也可在「服务管理 - 日志」中查看当前环境下所有服务、服务版本的日志数据。

![](https://res8.wxqcloud.qq.com.cn/wxdoc/c9129069-eecc-48db-9840-9be9ae944419.png)

## 日志采集路径

可设置目录或文件，支持设置多个路径。支持标准输出（stdout）以及 `*` 通配路径（例：`/logs/*`），使用 `,`（半角逗号）分割，留空将采集标准输出。

标准输出日志指的是在服务代码中将日志直接打印到控制台的标准输出(**stdout**)和标准错误(**stderr**)。

| 示例 | 说明 |
| :----- | :----------- |
| /var/log/nginx/**/access.log | 采集/var/log/nginx 前缀路径下所有子目录中以 access.log 命名的日志文件 |
| /var/log/nginx/**/*.log | 采集/var/log/nginx 前缀路径下所有子目录中以 .log 结尾的日志文件 |
| /var/log/nginx/**/error* | 采集/var/log/nginx 前缀路径下所有子目录中以 error 开头命名的日志文件 |
| /var/log/nginx/ | 错误写法，啥都采集不到。路径不能只指定到子目录 |

*注意：*日志采集路径和 Dockerfile 中 volume 配置的路径不能相同，否则路径将被二次映射将无法采集到日志。

## 检索日志

选择检索的时间范围，然后在输入框填写检索语法（支持全文检索、模糊关键字检索、键值检索）

- 全文检索，日志内容会根据分词符拆分为多个词组，用户可以输入特定的关键词精确检索到相关日志，也支持模糊关键字匹配检索。

- 键值检索，日志内容以 JSON 对象格式返回，类似于键值对即 `key:value` 形式，其中 key 作为用户可以自定义输出日志内容对象属性字段，value 则为日志内容，在控制台中同样支持 `key:value` 格式定位日志，value 支持模糊关键字检索。

- 模糊关键字检索，日志服务提供模糊查询的能力，通过特殊的模糊关键字进行日志检索，具体说明如下：

| 元字符 | 描述 |
| :----- | :----------- |
| * | 模糊查询关键字，匹配零个、单个或多个任意字符。不支持开头 `*`，例如，输入 `abc*`，会返回以 `abc` 开头的所有命中日志 |
| ? | 模糊查询关键字，特定位置匹配单个字符。例如，输入 `ab?c`，会返回以 `ab` 为开头，以 `c` 为结尾字符，且两者之间且有一个字符的所有命中日志 |

- 查询语法检索支持以下查询语法：

| 语法 | 语义 |
| :-------- | :----------- |
| key:value | 键值搜索格式，其中 value 支持 `?`、`*` 模糊搜索 |
| A and B | "与"逻辑，返回 A 与 B 的交集结果，若多个关键词，使用空格分割则默认为 and |
| A or B | "或"逻辑，返回 A 或 B 的并集结果 |
| not B | "非"逻辑，返回不包含 B 的结果 |
| A not B | "减"逻辑，返回符合 A 但不符合 B 的结果，即 A - B |
| A:B | key-value 对的查询格式，若 key 或者 value 中包含空格、冒号等关键字符，需要用引号包括。例如 "error level":high |
| 'a' | 字符 a 将被视为普通字符，不会当作语法关键词处理 |
| "A" | A 中的所有关键词都将被视为普通字符，不会当作语法关键词处理 |
| \ | 转义字符，转义后的字符表示符号本身，例如转义引号 `\"`，转义冒号 `\:` 等 |
| * | 模糊查询关键字，匹配零个、单个或多个任意字符，不支持开头 `*`，例如：输入 `abc*`，会返回以 `abc` 开头的所有命中日志 |
| ? | 模糊查询关键字，特定位置匹配单个字符。例如，输入 `ab?c`，会返回以 `ab` 为开头，以 `c` 为结尾字符，且两者之间且有一个字符的所有命中日志 |
| > | 范围操作符，表示大于某个数值，例如 status:>400 |
| >= | 范围操作符，表示大于等于某个数值，例如 status:>=400 |
|  `"` > `and` > `not` > `or`。
- 若 b 是文本，`a=b` 与 `a：b` 的区别在于前者是 a 全等于 b，后者是 a 包含 b（按分词逻辑处理，支持模糊搜索）。
- 语法关键词不区分大小写。

## 查看上下文

点击某条日志后的「搜索 icon」，云托管会根据该条日志的来源（服务-版本-容器实例），将该日志在原始文件中的前若干条（上文）或后若干条日志（下文）查找出来展示在弹框中。以方便在业务故障排查中快速查找相关故障信息，定位问题。

点击「加载上文」可展示更多该条日志的上文内容，点击「加载下文」可展示更多该条日志的下文内容；

## 复制日志

点击某条日志后的「复制 icon」，即将该条日志全部复制到粘贴板上。

## 服务上线前日志

服务上线前日志即从拉代码、构建镜像、推送镜像、到版本部署到容器上的所有日志，统一在具体服务中「部署发布」栏历史版本-发布详情中查看。

一般部署时出现错误，可以反馈此部署日志内容，能有效定位并为你解决问题。

![](https://res8.wxqcloud.qq.com.cn/wxdoc/e0b7782a-efeb-4dc3-8328-8e5aebd31713.png)
