proto文件_Golang GinWeb框架3-自定义日志格式/写入文件

简介


本文接着上文(Golang GinWeb框架2-文件上传/程序panic崩溃后自定义处理方式)继续探索GinWeb框架

9d2ee259038abefece8ed52bf0534604.png

记录日志到文件


利用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

欢迎大家留言, 订阅, 交流哦!


d44d32c165d9b32e7bbce1769a8d880d.gif

往期回顾


Golang GinWeb框架2-文件上传/程序panic崩溃后自定义处理方式

Golang GinWeb框架-快速入门/参数解析

Golang与亚马逊对象存储服务AmazonS3快速入门

Golang+Vue实现Websocket全双工通信入门

GolangWeb编程之控制器方法HandlerFunc与中间件Middleware

Golang连接MySQL执行查询并解析-告别结构体

Golang的一种发布订阅模式实现

Golang 并发数据冲突检测器(Data Race Detector)与并发安全

Golang"驱动"MongoDB-快速入门("快码加鞭")

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
ERROR Failed to compile with 48 errors 上午10:53:54 These dependencies were not found: * core-js/modules/es.array.push.js in ./node_modules/.store/@babel+runtime@7.22.6/node_modules/@babel/runtime/helpers/esm/objectSpread2.js, ./node_modules/.store/cache-loader@4.1.0/node_modules/cache-loader/dist/cjs.js??ref--12-0!./node_modules/.store/babel-loader@8.3.0/node_modules/babel-loader/lib!./node_modules/.store/cache-loader@4.1.0/node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/.store/vue-loader@15.10.1/node_modules/vue-loader/lib??vue-loader-options!./src/components/HeaderSearch/index.vue?vue&type=script&lang=js& and 29 others * core-js/modules/es.error.cause.js in ./node_modules/.store/@babel+runtime@7.22.6/node_modules/@babel/runtime/helpers/esm/regeneratorRuntime.js, ./node_modules/.store/cache-loader@4.1.0/node_modules/cache-loader/dist/cjs.js??ref--12-0!./node_modules/.store/babel-loader@8.3.0/node_modules/babel-loader/lib!./node_modules/.store/cache-loader@4.1.0/node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/.store/vue-loader@15.10.1/node_modules/vue-loader/lib??vue-loader-options!./src/layout/components/Navbar.vue?vue&type=script&lang=js& and 5 others * core-js/modules/es.object.proto.js in ./node_modules/.store/@babel+runtime@7.22.6/node_modules/@babel/runtime/helpers/esm/regeneratorRuntime.js * core-js/modules/es.regexp.dot-all.js in ./node_modules/.store/cache-loader@4.1.0/node_modules/cache-loader/dist/cjs.js??ref--12-0!./node_modules/.store/babel-loader@8.3.0/node_modules/babel-loader/lib!./node_modules/.store/cache-loader@4.1.0/node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/.store/vue-loader@15.10.1/node_modules/vue-loader/lib??vue-loader-options!./src/components/ThemePicker/index.vue?vue&type=script&lang=js&, ./node_modules/.store/cache-loader@4.1.0/node_modules/cache-loader/dist/cjs.js??ref--12-0!./node_modules/.store/babel-loader@8.3.0/node_modules/babel-loader/lib!./node_modules/.store/cache-loader@4.1.0/node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/.store/vue-loader@15.10.1/node_modules/vue-loader/lib??vue-loader-options!./src/layout/components/Navbar.vue?vue&type=script&lang=js& and 2 others * core-js/modules/web.url-search-params.delete.js in ./src/utils/request.js * core-js/modules/web.url-search-params.has.js in ./src/utils/request.js * core-js/modules/web.url-search-params.size.js in ./src/utils/request.js * qs in ./src/utils/request.js * svg-baker-runtime/browser-symbol in ./src/icons/svg/user.svg To install them, you can run: npm install --save core-js/modules/es.array.push.js core-js/modules/es.error.cause.js core-js/modules/es.object.proto.js core-js/modules/es.regexp.dot-all.js core-js/modules/web.url-search-params.delete.js core-js/modules/web.url-search-params.has.js core-js/modules/web.url-search-params.size.js qs svg-baker-runtime/browser-symbol怎么解决如何安装
07-21
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值