首页 > 解决方案 > 在整个应用程序中使用相同的 zerolog 设置

问题描述

我正在用自己开发的包开发一个 Go 应用程序,我决定用它zerolog来记录。在初始化文件中,我初始化了一个 zerolog 记录器以将日志保存到多个输出中,但是如何将该设置用于开发的所有包中?有一些最佳实践吗?是否可以使用该设置而不每次都将记录器传递给包?

标签: gologging

解决方案


Logger在称为或其他东西的不同包中声明logger并使用记录器在所有包中引用它

 package logger
 
 import (
    "github.com/rs/zerolog"
    "os"
 )
 
 var Logger zerolog.Logger
 
 func InitLog()  {
    consoleWriter := zerolog.ConsoleWriter{Out: os.Stdout}
    multi := zerolog.MultiLevelWriter(consoleWriter, os.Stdout)
    Logger = zerolog.New(multi).With().Timestamp().Logger()
 }

Logger在记录器包中声明。启动项目时初始化 Logger 并像下面这样使用它。

 package main
 
 import "myapp/logger"
 
 func main() {
    logger.InitLog()
    logger.Logger.Info().Msg("Hello, Main!")
 }

推荐阅读