在 文章中粉丝提问:
刚接触gin,请教下gin在记录日志的时候能不能把每天的日志记录到单独的文件,第二个问题我在用gorm的时候用了一个变量保存gorm. open的返回值,其他地方就直接使用的那个变量,结果经常在终端看到数据库连接被关闭了,这时接口请求会失败
第一个问题答疑如下:
在 默认情况 下,使用log.Println()输出到 控制台 。
如果需要记录到文件中,我们需要对 log.SetOutput() 进行重新设置。
func SetOutput(w io.Writer)
思路:
1、日志文件” running.log “,如果日志文件不存在,那就创建日志文件;如果日志文件存在,那就在增加日志记录
2、为了 实时 观察执行过程,日志信息也同步在控制台输出
项目设想:访问 ,控制台和日志文件都记录访问者的 header 信息
操作过程:
1、重置日志记录
MultiWriter创建一个Writer,os.Stdout为默认控制台输出,File为打开的日志文件,将os.Stdout和File作为MultiWriter的参数。
log.SetOutput()的目的是设置日志输出模式
2、获取客户端header
json.Marshal(c.Request.Header),将客户端header信息进行json编码
c.Writer.Write(bytes),将json信息输出到页面