Golang GinWeb框架3-自定义日志格式和输出方式/启禁日志颜色
2023-03-14 09:40:06 时间
简介
本文接着上文(Golang GinWeb框架2-文件上传/程序panic崩溃后自定义处理方式)继续探索GinWeb框架
记录日志到文件
利用io.MultiWriter多写出器可以实现日志记录到文件的同时也输出到控制台
- package main
- import (
- "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 main
- import (
- "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是一个格式化日志参数的结构体
- 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\"\n",
- 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 main
- import (
- "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) middleware
- router := 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
相关文章
- 以一当十的程序员不是传说
- 程序员如何既不耽误工作又有时间干业余项目?
- Hadoop分布式文件系统-从RAID说起
- 三类可以让大数据发挥价值的途径
- 企业如何使用大数据对搜索引擎进行优化
- 编码之道:取个好名字很重要
- 企业想要成功布局大数据的七大关键步骤
- iOS9 collectionView新特性
- 小企业开始采用大数据的4个步骤
- 面向过程,面向对象,函数式对同一个问题的思考方式
- 企业现代化改造基础设施,应对GDPR带来的挑战
- 行动贝果结合人工智能技术打造智能分析引擎
- Cookie安全大辩论总结
- TalkingData:全新战略布局,重塑数据智能
- 优秀开发者的最缺的技能不是开发技术
- 数据科学正从这七个方向颠覆金融界
- 给自私自利程序员的10大职业谏言
- 安卓开发笔记——探索EventBus
- 数据科学求职建议:掌握5种类型的数据科学项目
- 为什么 Laravel 会成为最成功的 PHP 框架?