gin框架全局捕获异常并写入日志文件

gin 的默认启动方式为 debug 模式

gin.Default()

func Default() *Engine {
	debugPrintWARNINGDefault()
	engine := New()
	engine.Use(Logger(), Recovery())
	return engine
}

func Recovery() HandlerFunc {
	return RecoveryWithWriter(DefaultErrorWriter)
}

func RecoveryWithWriter(out io.Writer) HandlerFunc {
	...
}

var DefaultErrorWriter io.Writer = os.Stderr

所以在开发过程中,设置为debug模式,所有的panic都会被Recovery()中间件捕获,并以标准错误的方式输出到终端。

但是在线上的时候,我们需要所有的panic都被捕获,并写入到日志文件,方便排查错误。

此时我们需要使用 RecoveryWithWriter 中间件,并传入一个 io.Writer ,也就是你打开着的日志文件句柄。

类似于这样:

gin.RecoveryWithWriter(logging.F)

其中F为我要写入的日志文件,并且已经被打开。

F, err = file.MustOpen(fileName, filePath)

所以,在启动服务的时候一般这样设置:

gin.SetMode(setting.GetRunMode())

// 初始化应用
if setting.GetRunMode() == "debug" {
	GRouter = gin.Default()
} else {
	GRouter = gin.New()
	GRouter.Use(gin.RecoveryWithWriter(logging.F))
}
  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值