文件控制台同时输出

如何在 go-zero 中输出日志到文件中的同时也打印到控制台?

为了在使用 go-zero 框架时实现日志既输出到文件又打印到控制台,可以按照以下步骤进行配置和编写代码。

步骤如下:

  1. 创建配置文件 config.yaml: 首先,定义一个 YAML 文件来配置日志输出模式和编码方式。
  1. Mode: file
  2. Encoding: json
  1. 编写主程序 main.go: 使用以下 Go 代码加载配置文件,并设置日志输出到文件和控制台。
  1. package main
  2. import (
  3. "os"
  4. "time"
  5. "github.com/zeromicro/go-zero/core/conf"
  6. "github.com/zeromicro/go-zero/core/logx"
  7. "github.com/zeromicro/go-zero/core/proc"
  8. )
  9. func main() {
  10. var c logx.LogConf
  11. conf.MustLoad("config.yaml", &c) // 加载配置文件
  12. logx.MustSetup(c) // 设置日志配置
  13. logx.AddWriter(logx.NewWriter(os.Stdout)) // 添加控制台输出
  14. for {
  15. select {
  16. case <-proc.Done(): // 检查程序是否需要退出
  17. return
  18. default:
  19. time.Sleep(time.Second)
  20. logx.Info(time.Now()) // 打印当前时间到日志
  21. }
  22. }
  23. }

详细说明

  • 配置文件 (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