### 初始化 已经封装的框架中 单独抽离出来一个日志包, 分为 2种日志 1. http 服务: hlog.go 2. rpc 服务:klog.go ```sql ├── pkg │ ├── log │ │ ├── hlog.go │ │ ├── klog.go │ │ └── utils.go ``` 在对应的服务启动文件中 直接使用 `log.InitKLogger(consts.HlogFilePath, global.ServerConfig.LogLevel)` 有 2个参数: 1. 日志目录路径,可以是绝对路径,也可以是相对路径 (相对的是 启动服务的目录) 2. 日志级别,可以在 配置中心进行配置,方便不同环境打印不同级别的日志 > 1. 日志目录也可以配置到配置中心,需要在 对应服务的 global.ServerConfig 结构体中增加对应的日志字段 > > LogLevel string `mapstructure:"log_level" json:"log_level"` > > 可用的值: Trace,Debug,Info,Notice,Warn,Error,Fatal > 2. 日志初始化依赖配置中心配置的信息,所以需要在 初始化 nacos initialize.InitNacos(Port) > 之后使用 ### 使用 可以将日志与 Context 关联 ```go func (s *EchoImpl) Echo(ctx context.Context, req *api.Request) (resp *api.Response, err error) { klog.CtxDebugf(ctx, "echo called: %s", req.GetMessage()) return &api.Response{Message: req.Message}, nil } ``` 会输出:span_id 和 trace_id ```json { "level":"debug", "msg":"echo called: my request", "span_id":"056e0cf9a8b2cec3", "time":"2022-03-09T02:47:28+08:00", "trace_flags":"01", "trace_id":"33bdd3c81c9eb6cbc0fbb59c57ce088b" } ```