本文共 822 字,大约阅读时间需要 2 分钟。
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))}
转载地址:http://jjaui.baihongyu.com/