1[← 调试](6-Debug-CN.md) | 日志[(English)](7-Logger-EN.md) | [并发 →](8-Concurrent-CN.md)
2***
3
4# 日志
5
6## 描述
7
8logger 主要用于提供支持审计的能力,用于记录每次的调用情况,类似服务端的 access log。
9
10## 使用
11
12### 初始化日志
13
14如果您想要使用日志功能,您需要先初始化一个日志对象,您可以在初始化日志对象的时候设置日志等级,日志模版, 日志的输出路径以及 channel。
15```go
16// level: 默认为 info
17// channel: 默认为 AlibabaCloud
18// file: 一个实现了 io.writer 接口的对象
19// templete: 日志的模板, 若不输入,则默认为 `{time} {channel}: "{method} {uri} HTTP/{version}" {code} {cost} {hostname}`
20client.SetLogger("level", "channel", file, templete)      // 设置客户端的日志, 当您调用该方法,默认为您开启日志功能
21```
22
23### 相关操作
24
25```go
26logger := client.GetLogger()    // 获取客户端的 logger
27client.OpenLogger()            // 开启日志功能,若此时客户端的 logger 不存在, 则创建一个配置一个默认的 logger
28client.CloseLogger()           // 关闭日志功能
29client.GetLoggerMsg()          // 获取上一条日志信息,若此时客户端的 logger 不存在, 则创建一个配置一个默认的 logger
30client.SetTemplate(templete)   // 设置日志模板,若此时客户端的 logger 不存在, 则创建一个配置一个默认的 logger
31client.GetTemplate()           // 获取当前的日志模板,若此时客户端的 logger 不存在, 则创建一个配置一个默认的 logger
32```
33
34### 变量
35
36|    变量    |   描述    |
37|----------|-------------|
38| {channel}     | 日志的对象 |
39| {host}     | 请求主机 |
40| {ts}     | GMT中的 ISO 8601日期 |
41| {method}     | 请求方法 |
42| {uri}     | 请求的URI |
43| {version}     | 协议版本 |
44| {target}     | 请求目标 (path + query) |
45| {hostname}     | 发送请求的计算机的主机名 |
46| {code}     | 响应的状态代码(如果可用) |
47| {error}     | 任何错误消息(如果有) |
48| {req_headers}     | 请求头 |
49| {res_headers}     | 响应头 |
50| {pid}     | PID |
51| {cost}     | 耗时 |
52| {start_time}  | 开始时间 |
53
54***
55[← 调试](6-Debug-CN.md) | 日志[(English)](7-Logger-EN.md) | [并发 →](8-Concurrent-CN.md)
56