文件控制台同时输出
如何在 go-zero 中输出日志到文件中的同时也打印到控制台?
为了在使用 go-zero 框架时实现日志既输出到文件又打印到控制台,可以按照以下步骤进行配置和编写代码。
步骤如下:
- 创建配置文件
config.yaml: 首先,定义一个 YAML 文件来配置日志输出模式和编码方式。
Mode: fileEncoding: json
- 编写主程序
main.go: 使用以下 Go 代码加载配置文件,并设置日志输出到文件和控制台。
package mainimport ("os""time""github.com/zeromicro/go-zero/core/conf""github.com/zeromicro/go-zero/core/logx""github.com/zeromicro/go-zero/core/proc")func main() {var c logx.LogConfconf.MustLoad("config.yaml", &c) // 加载配置文件logx.MustSetup(c) // 设置日志配置logx.AddWriter(logx.NewWriter(os.Stdout)) // 添加控制台输出for {select {case <-proc.Done(): // 检查程序是否需要退出returndefault:time.Sleep(time.Second)logx.Info(time.Now()) // 打印当前时间到日志}}}
详细说明:
配置文件 (
config.yaml):Mode: file表示将日志输出到文件。Encoding: json指定日志的编码格式为 JSON。
主程序 (
main.go):- 使用
conf.MustLoad加载配置文件。 - 调用
logx.MustSetup配置日志系统。 - 使用
logx.AddWriter方法添加额外的日志输出目标,这里我们添加了标准输出(控制台)。 - 在无限循环中,每秒记录一次当前时间,通过
select语句配合proc.Done()实现平滑退出。
- 使用
通过以上配置和代码,能够实现 go-zero 同时输出日志到文件和控制台。
go-zero 版本:>= v1.7.0