Gone框架介绍14 -日志输出

日志输出

在Gone中,提供了一个内置Goner用于日志输出——logrus,是通过将github.com/sirupsen/logrus包封装为Goner实现的。希望有小伙伴封装其他的日志输出包,提供更多的日志解决方法。

将相关Goners埋葬到Cemetery

tip: 了解Gone的核心概念和术语请阅读:Gone的核心概念

在这里,我们采用github.com/gone-io/gone/tree/main/goner包中的**BasePriest**来完成相关Goners的埋葬。在BasePriest中同时被埋葬到Cemetery还包括配置和trace相关的Goners,这三个包一般一起使用。


func MasterPriest(cemetery gone.Cemetery) error {
	_ = goner.BasePriest(cemetery)

	//埋葬其他Goners
	return nil
}

我从头到尾实现了一个Golang的依赖注入框架,并且集成了gin、xorm、redis、cron、消息中间件等功能;自己觉得还挺好用的,推荐给你!也欢迎一起维护!
github地址:https://github.com/gone-io/gone
文档地址:https://goner.fun/
如果可能,请帮忙在github上点个 ⭐️ ;万分感谢!!

在配置文件中添加相关配置

tip: 通过内置Goners支持配置文件

支持的配置项

  • log.level,日志级别,默认为info;支持的级别:

    • panic
    • fatal
    • error
    • warn 或者 warning
    • info
    • debug
    • trace
  • log.report-caller,如果为true日志将打印调用日志输出位置的文件名和行号,例如:

    2024-05-11 09:09:57.784|INFO|/Users/jim/go/pkg/mod/github.com/gone-io/gone@v0.1.4/goner/gin/server.go:46|061ad00f-8c0d-479c-bc4c-393e0cf2cca2|Server Listen At :8080

  • log.output,日志输出的位置,默认为stdout(标准输出),支持stderr 和 一个文件路径

    最佳实践: 将应用部署在容器中,日志直接输出到标准输出,由收集组件采集日志,比较成熟的方法比如EFK

打印日志

使用Info方法打印日志:

//...

type service struct {
    gone.Flag
    log logrus.Logger `gone:"gone-logger"` //具名注入到 嵌套的log属性上
}

func (svc *service) Business(input string) (string, error) {

    //打印日志
	svc.log.Infof("input content is %s", input)

	return input, nil
}

//...

其他级别的日志打印,参考接口代码:

// Logger 日志接口
type Logger interface {
	Tracef(format string, args ...any)
	Debugf(format string, args ...any)
	Infof(format string, args ...any)
	Printf(format string, args ...any)
	Warnf(format string, args ...any)
	Warningf(format string, args ...any)
	Errorf(format string, args ...any)
	Fatalf(format string, args ...any)
	Panicf(format string, args ...any)

	Trace(args ...any)
	Debug(args ...any)
	Info(args ...any)
	Print(args ...any)
	Warn(args ...any)
	Warning(args ...any)
	Error(args ...any)
	Fatal(args ...any)
	Panic(args ...any)

	Traceln(args ...any)
	Debugln(args ...any)
	Infoln(args ...any)
	Println(args ...any)
	Warnln(args ...any)
	Warningln(args ...any)
	Errorln(args ...any)
	Fatalln(args ...any)
	Panicln(args ...any)
}

日志的格式

${日志输出时间}|${日志级别}|${打印日志的源代码位置}|${TraceId}|${日志内容}

例如:

2024-05-11 09:09:57.784|INFO|**/Users/jim/go/pkg/mod/github.com/gone-io/gone@v0.1.4/goner/gin/server.go:46**|061ad00f-8c0d-479c-bc4c-393e0cf2cca2|Server Listen At :8080

关于TraceId

在web应用中,我们希望有一个统一的编号来标识同一请求产生的日志。这个统一的Id,就是TraceId,如果有这个Id,排查问题时,我们只需要使用这个Id搜索日志,就可以获取请求的所有日志。


文档路径:https://goner.fun/zh/guide/logrus.html
日志包代码路径:https://github.com/gone-io/gone/tree/main/goner/logrus

求赞助

如果觉得还可以,请帮忙在github上点个 ⭐️吧:
github地址:https://github.com/gone-io/gone

福利🔥添加交流群,赠送 Golang 多套 学习资料,夯实基础👍🏻👍🏻

上一篇:Gone框架介绍13 - Gone的Hook函数
下一篇:Gone框架介绍15 - 使用traceId追踪日志

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

dapeng-大鹏

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值