
# 日志初始化(Go SDK)
#### 功能说明
通过开启SDK日志功能，可将接口调用过程中产生的日志信息记录到日志文件，用于后续的数据分析或问题定位。您可以通过InitLog开启日志；CloseLog关闭日志并同步缓存中的日志内容到日志文件。
#### 初始化方法
```
func InitLog(logFullPath string, maxLogSize int64, backups int, level Level, logToConsole bool) error
```
#### 参数描述
| **参数名称**     | **参数类型**                                  | **是否必选** | **描述**                                                                                                                                                                                              |
|:---|:---|:---|:---|
| logFullPath  | string                                    | 必选       | 日志文件的全路径。                                                                                                                                                                                           |
| maxLogSize   | int64                                     | 必选       | 日志文件大小，单位：字节。                                                                                                                                                                                       |
| backups      | int                                       | 必选       | 最大可保留的日志文件个数。                                                                                                                                                                                       |
| level        | [Level] | 必选       | 日志级别。                                                                                                                                                                                               |
| logToConsole | bool                                      | 必选       | 是否将日志打印到控制台。 取值范围：true/false true: 表示将日志打印到控制台 false: 表示将日志不打印到控制台 默认值：false |
   
 表1Level 
| **常量名**     | **原始值** | **说明**                                                                           |
|:---|:---|:---|
| LEVEL_OFF   | 500     | 关闭级别，如果设置为这个级别，日志打印功能将被关闭。                                                       |
| LEVEL_ERROR | 400     | 错误级别，如果设置为这个级别，仅打印发生异常时的错误信息。                                                    |
| LEVEL_WARN  | 300     | 告警级别，如果设置为这个级别，除了打印错误级别的信息外，还将打印一些关键事件的信息。                                       |
| LEVEL_INFO  | 200     | 信息级别，如果设置为这个级别，除了打印告警级别的信息外，还将打印HTTP/HTTPS请求的耗时时间，ObsClient接口的耗时时间等。             |
| LEVEL_DEBUG | 100     | 调试级别，如果设置为这个级别，除了打印INFO级别的信息外，还将打印每次HTTP/HTTPS请求和响应的头信息、鉴权算法计算出的stringToSign信息等。 |
   
#### 代码示例
```
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)
- 日志功能默认是关闭的，需要主动开启。
- 您可以从[日志分析](https://support.huaweicloud.com/sdk-go-devg-obs/obs_23_1603.html)章节获取更多关于SDK日志的信息。
- 日志默认首先写入缓存（累积一定量后再写入文件），程序退出前调用obs.CloseLog()可同步缓存中的日志内容到日志文件。
 
