
# 日志分析
#### 日志配置
OBS Go SDK基于标准库log提供了日志功能，您可以通过InitLog开启日志、CloseLog关闭并同步缓存中的日志内容到日志文件。示例代码如下：
```
package main
// 引入依赖包
import (
       obs "github.com/huaweicloud/huaweicloud-sdk-go-obs/obs"
)
func main() {
       // 设置日志文件存放的路径
       var logFullPath string = "./logs/OBS-SDK.log"
       // 设置每个日志文件的大小，单位：字节
       var maxLogSize int64 = 1024 * 1024 * 10
       // 设置保留日志文件的个数
       var backups int = 10
       // 设置日志的级别
       var level = obs.LEVEL_INFO
       // 设置是否打印日志到控制台
       var logToConsole bool = false
       // 开启日志
       obs.InitLog(logFullPath, maxLogSize, backups, level, logToConsole)
       // 关闭日志
       obs.CloseLog()
}
```
![](https://support.huaweicloud.com/sdk-go-devg-obs/public_sys-resources/note_3.0-zh-cn.png)
- 日志功能默认是关闭的，需要主动开启。
- 日志默认首先写入缓存（累积一定量后再写入文件），程序退出前调用obs.CloseLog()可同步缓存中的日志内容到日志文件。
 
#### 日志内容格式
SDK日志格式为：日志时间\|打印日志所在的文件：行号\|日志级别\|日志内容。示例如下：
```
2018/03/13 16:21:50 [INFO]: http.go:79|Enter method ListBuckets...
2018/03/13 16:21:52 [INFO]: http.go:287|Do http request cost 2597 ms
```
#### 日志级别
当系统出现问题需要定位且当前的日志无法满足要求时，可以通过修改日志的级别来获取更多的信息。SDK提供了代表日志级别的枚举常量以设置不同的日志级别，具体说明如下：
| **常量名**     | **原始值** | **说明**                                                                           |
|:---|:---|:---|
| LEVEL_OFF   | 500     | 关闭级别，如果设置为这个级别，日志打印功能将被关闭。                                                       |
| LEVEL_ERROR | 400     | 错误级别，如果设置为这个级别，仅打印发生异常时的错误信息。                                                    |
| LEVEL_WARN  | 300     | 告警级别，如果设置为这个级别，除了打印错误级别的信息外，还将打印一些关键事件的信息。                                       |
| LEVEL_INFO  | 200     | 信息级别，如果设置为这个级别，除了打印告警级别的信息外，还将打印HTTP/HTTPS请求的耗时时间，ObsClient接口的耗时时间等。             |
| LEVEL_DEBUG | 100     | 调试级别，如果设置为这个级别，除了打印INFO级别的信息外，还将打印每次HTTP/HTTPS请求和响应的头信息、鉴权算法计算出的stringToSign信息等。 |
   
