在整个应用程序中使用相同的零日志设置

Gra*_*son 1 logging go

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

nip*_*una 6

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()
 }
Run Code Online (Sandbox Code Playgroud)

在记录器包中声明Logger。启动项目时初始化 Logger 并按如下方式使用它。

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