简介
本文接着上文(Golang GinWeb框架2-文件上传/程序panic崩溃后自定义处理方式)继续探索GinWeb框架
![9d2ee259038abefece8ed52bf0534604.png](https://i-blog.csdnimg.cn/blog_migrate/7c26c678536ab14eb756438c34e7254e.jpeg)
记录日志到文件
利用io.MultiWriter多写出器可以实现日志记录到文件的同时也输出到控制台
package mainimport ("github.com/gin-gonic/gin""io""os")func main() {// Disable Console Color, you don't need console color when writing the logs to file.// 禁用控制台日志颜色,日志写到文件的时候,不需要打开控制台日志颜色gin.DisableConsoleColor()// Logging to a file. 新建日志文件,得到文件结构, 文件结构实现了写出器Writer接口f, _ := os.Create("gin.log")//io.MultiWriter(多写出器方法)创建一个写出器, 将传入的多个写出器追加为一个写出器数组, 得到的写出器实现了Writer接口, 它会将需要写出的数据写出到每个写出器, 就像Unix命令tee,会将数据写入文件的同时打印到标准输出//配置Gin默认日志写出器为多写出器gin.DefaultWriter = io.MultiWriter(f)// Use the following code if you need to write the logs to file and console at the same time.// 使用下面的代码,将日志写入文件的同时,也输出到控制台// gin.DefaultWriter = io.MultiWriter(f, os.Stdout)router := gin.Default()router.GET("/ping", func(c *gin.Context) {c.String(200, "pong")})router.Run(":8080")}
自定义日志格式
利用Gin的LoggerWithFormatter方法实例化一个日志器Logger中间件,并带有指定的日志格式
package mainimport ("fmt""github.com/gin-gonic/gin""time")func main() {router := gin.New()// LoggerWithFormatter middleware will write the logs to gin.DefaultWriter// By default gin.DefaultWriter = os.Stdout// type LogFormatter func(params LogFormatterParams) string 这里的LogFormatterParams是一个格式化日志参数的结构体// LoggerWithFormatter instance a Logger middleware with the specified log format function.// LoggerWithFormatter方法实例化一个日志器Logger中间件,并带有特殊的日志格式router.Use(gin.LoggerWithFormatter(func(param gin.LogFormatterParams) string {// your custom format// 127.0.0.1 - [Sun, 22 Nov 2020 17:09:53 CST] "GET /ping HTTP/1.1 200 56.113µs "curl/7.64.1" "return fmt.Sprintf("%s - [%s] "%s %s %s %d %s "%s" %s"",param.ClientIP, //请求客户端的IP地址param.TimeStamp.Format(time.RFC1123), //请求时间param.Method, //请求方法param.Path, //路由路径param.Request.Proto, //请求协议param.StatusCode, //http响应码param.Latency, //请求到响应的延时param.Request.UserAgent(), //客户端代理程序param.ErrorMessage, //如果有错误,也打印错误信息)}))router.Use(gin.Recovery())router.GET("/ping", func(c *gin.Context) {c.String(200, "pong")})router.Run(":8080")}//模拟请求测试: curl http://localhost:8080/ping
打开/禁用日志颜色
- gin.DisableConsoleColor() 禁用日志颜色
- gin.ForceConsoleColor() 强制开启日志颜色, 采用虚拟终端TTY颜色方案
package mainimport ("github.com/gin-gonic/gin")func main() {// 默认输出到控制台的日志颜色是根据您使用的虚拟终端TTY来着色的// Disable log's color 禁用日志颜色gin.DisableConsoleColor()// Force log's color 强制开启日志颜色//gin.ForceConsoleColor()// Creates a gin router with default middleware:// logger and recovery (crash-free) middlewarerouter := gin.Default()router.GET("/ping", func(c *gin.Context) {c.String(200, "pong")})router.Run(":8080")}//模拟请求测试: curl http://localhost:8080/ping
参考文档
Gin官方仓库:https://github.com/gin-gonic/gin
END已结束
![4abead4bfc8031d457fbcd1f299425d6.png](https://i-blog.csdnimg.cn/blog_migrate/18dca4ff1f38edffbf1b8c35bc92f5c5.jpeg)
欢迎大家留言, 订阅, 交流哦!
![d44d32c165d9b32e7bbce1769a8d880d.gif](https://i-blog.csdnimg.cn/blog_migrate/808cf3f449d46443207136dc5b517e63.gif)
往期回顾
Golang GinWeb框架2-文件上传/程序panic崩溃后自定义处理方式
Golang GinWeb框架-快速入门/参数解析
Golang与亚马逊对象存储服务AmazonS3快速入门
Golang+Vue实现Websocket全双工通信入门
GolangWeb编程之控制器方法HandlerFunc与中间件Middleware
Golang连接MySQL执行查询并解析-告别结构体
Golang的一种发布订阅模式实现
Golang 并发数据冲突检测器(Data Race Detector)与并发安全
Golang"驱动"MongoDB-快速入门("快码加鞭")