go - 在整个应用程序中使用相同的 zerolog 设置
问题描述
我正在用自己开发的包开发一个 Go 应用程序,我决定用它zerolog
来记录。在初始化文件中,我初始化了一个 zerolog 记录器以将日志保存到多个输出中,但是如何将该设置用于开发的所有包中?有一些最佳实践吗?是否可以使用该设置而不每次都将记录器传递给包?
解决方案
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!")
}
推荐阅读
- raku - 实例化 Raku 类,并在构造函数中更新实例变量
- c++ - c++ 多个虚拟嵌套函数
- android - 在`.symlinks/plugins/geolocator_web/ios`中找不到`geolocator_web`的podspec
- python - 如何在python中对来自JsonResponse的数据进行分组?
- python - 熊猫索引在性能上比列有优势吗?
- javascript - 在Javascript中通过键本身编辑对象值
- excel - 终值公式无法正常工作。答案是很大的数字
- bash - 我想在 git 命令上更改文件目录
- java - Spring Boot 和 Android 中的 Google Calendar API 集成
- react-native - 未使用所需变量传递的函数(Expo/React Native)