go json 自定义_Go语言Echo Web框架9-日志

上一节:Go语言Echo Web框架8-JWT 这一节介绍日志

echo自带的日志中间件记录有关每个HTTP请求的信息

451c13d59b918742362feeb578ee27c4.png

日志

日志中间件

用法

e.Use(middleware.Logger())

样本输出

{  "time":"2020-09-13T21:58:07.372015644-08:00",   "remote_ip":"::1",   "host":"localhost:1323",   "method":"GET",   "uri":"/","status":200,   "error":"",   "latency":1474 ,   "latency_human":"14.743µs",   "bytes_in":0,   "bytes_out":2}

自定义输出数据结构

用法

e.Use(middleware.LoggerWithConfig(middleware.LoggerConfig{  Format: "method=${method}, uri=${uri}, status=${status}",}))

上面的列子使用Format输出请求方法,请求路径,以及状态。

输出例子:

method=GET, uri=/, status=200

日志中间的配置

LoggerConfig struct {    // Skipper defines a function to skip middleware.    Skipper Skipper    // Tags to constructed the logger format.    //    // - time_unix    // - time_unix_nano    // - time_rfc3339    // - time_rfc3339_nano    // - id (Request ID)    // - remote_ip    // - uri    // - host    // - method    // - path    // - referer    // - user_agent    // - status    // - error    // - latency (In nanoseconds)    // - latency_human (Human readable)    // - bytes_in (Bytes received)    // - bytes_out (Bytes sent)    // - header:    // - query:    // - form:    // - cookie:    //    // Example "${remote_ip} ${status}"    //    // Optional. Default value DefaultLoggerConfig.Format.    Format string `json:"format"`    // Output is a writer where logs are written.    // Optional. Default value os.Stdout.    Output io.Writer  }

日志输出自定义的json数据

用法

func HelloHandler(c echo.Context) error {      // 创建日志,记录    a := log.JSON{"params": c.QueryParams()}    c.Logger().Printj(a)  }

上面的例子,我们可以自定义日志信息输出。

输出例子

{  "time":"2020-09-15T09:47:22.371250423+08:00",    "level":"-","  prefix":"echo","file":"ticaiHandler.go","line":"21","params":{"pageNo":["1"],"pageSize":["10"]}}

echo自带的日志中间件的功能在日常开发中已经足够使用。

bfd2b81778cb3f6761bb39d2fe298740.png

日志跟踪

在项目开发中,都不可避免的使用到日志。没有日志虽然不会影响项目的正确运行,但是没有日志的项目可以说是不完整的。日志在调试,错误或者异常定位,数据分析中的作用是不言而喻的。

1. 记录用户操作的审计日志,甚至有的时候就是监管部门的要求。
2. 快速定位问题的根源
3. 追踪程序执行的过程。
4. 追踪数据的变化
5. 数据统计和性能分析
6. 采集运行环境数据

对应视频演示:Go语言Echo Web框架9_视频_日志

下一节:Go语言Echo Web框架10-文件上传下载

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/267949.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

cad文字递增快捷键_十年经验总结,100个CAD快捷键。

CAD绘图快捷键命令:1. 圆 > C2. 点 > PO3. 直线 > L4. 圆弧 > A5. 椭圆 > EL6. 表格 > TB7. 矩形 > REC8. 面域 > REG9. 创建块 > B10. 插入块 > I11. 多段线 > PL12. 构造线 > XL13. 图案填充 > H14. 样条曲线 > SPL15.…

实验5: IOS的升级与恢复

实验5: IOS的升级与恢复 实验目的通过本实验可以掌握 1) 掌握IOS 正常的情况下升级IOS2) IOS 丢失的情况下使用TFTP恢复IOS3) IOS 丢失的情况下使用Xmodem恢复IOS 拓扑结构 实验步骤n IOS 正常的情况下升级IOS (TFTP)Router#conf t //进…

MYSQL:基础——触发器

MYSQL基础——触发器 引入触发器 什么是触发器 如果你想要某条语句(或某些语句)在事件发生时自动执行。比如: 每当订购一个产品时,都从库存数量中减去订购的数量;无论何时删除一行,都在某个存档表中保留一个副本。就需要用到触发器…

双线macd指标参数最佳设置_常用指标知多少(二)

均线日期的选择种类有很多,一般行情软件常用的均线日期是5日、10日、20日、30日和60日,一般也会默认是这些日期,也有的加上了长线的120日和250日,很好理解,因为每周交易日是5天,所以以倍数做比较。使用海龟…

图片合成gif_使用在线图片工具处理静态和动态图片的技巧

图片一般分为两种,一种是静态图片,常用的图片格式有jpg,png等。处理静态图片可用用手机自己带的图片处理工具处理,也能够使用线上的在线作图工具来进行操作,比如找图设计,懒设计,稿定设计等设计…

Redis源代码分析之sds, 动态数组

Redis是用C语言编写的。C语言处理字符串一向是个难点。很容易出现内存越界问题。 其它高级语言很容易实现的字符串拼接,在C这里却是百般艰难。因为需要实现计算出字符串所占内存的大小。即不能过大(浪费内存),也不能太小&#xff…

C#委托的异步调用[转]

本文将主要通过“同步调用”、“异步调用”、“异步回调”三个示例来讲解在用委托执行同一个“加法类”的时候的的区别和利弊。 首先,通过代码定义一个委托和下面三个示例将要调用的方法: /*添加的命名空间using System.Threading;using System.Runtime.…

钉钉微应用怎么进入_蓝凌携手钉钉走进越秀地产,零距离热聊企业数字化转型...

8月18日,蓝凌携手钉钉一同走进越秀地产,举办了《地产行业数字化实战闭门分享会》主题活动,与30余名嘉宾欢聚一堂,体验智慧管理实践与数字工作模式,探索企业数字化转型升级之道。越秀地产CIO陈磊、越秀地产信息总监郑毅…

mysql5.7半自动同步设置【转】

mysql的主从复制主要有3种模式: a..主从同步复制:数据完整性好,但是性能消耗高 b.主从异步复制:性能消耗低,但是容易出现主从数据唯一性问题 c.主从半自动复制:介于上面两种之间。既能很好的保持完整性&…

Android之旅---广播(BroadCast)

什么是广播在Android中,Broadcast是一种广泛运用的在应用程序之间传输信息的机制。我们拿广播电台来做个比方。我们平常使用收音机收音是这样的:许许多多不同的广播电台通过特定的频率来发送他们的内容,而我们用户只需要将频率调成和广播电台…

python牛客网编程题_【面经】小米软件开发一面(python)面经 2020 2020

作者:JessyTsuihttps://www.nowcoder.com/discuss/580721?type2&order0&pos15&page1&channel-1&source_iddiscuss_tag_nctrack来源:牛客网小米软件开发一面(python)面经一共三轮技术面,第四轮是HR面,已OC&am…

c# 数组和集合

数组是最为常见的一种结构,是相同类型的、用一个标识符封装到一起的j基本类型数据序列或对象序列,可以用一个统一的数组名和下标来唯一确定数组中的元素。实质上数组是一个简单的线性序列,因此数组访问起来很快。而集合可以看成一种特殊的数组…

和vs版本关系_栈局部变量优化探究,意外发现了 vs 的一个 bug ?

缘起 我在《栈又溢出了》一文中记录了一个奇怪的栈溢出问题。虽然解决了,但是总感觉哪里不太合理。我想,vs 一定有一个合理的设置。一起折腾起来吧!查找工程设置 本以为能找到某个编译选项对局部变量占用内存的行为进行控制。看遍了工程设置也…

在ubuntu 16.04上安装tensorflow,并测试成功

用下面代码测试安装: 1 #! /usr/bin/python2 # -*- coding: utf-8 -*-3 4 import tensorflow as tf5 import numpy6 import matplotlib.pyplot as plt7 rng numpy.random8 9 learning_rate 0.01 10 training_epochs 1000 11 display_step 50 12 #数据集x 13 tra…

redis客户端连接数量_实战解析无所不知的Redis拓展应用——Info,进阶学习,无所不能...

前言学习是一个持续的过程。像咱们一直在更新的Redis学习内容,由基础结构,到原理应用,再到集群搭建,了解的够充分了,咱们接着又介绍Redis拓展应用,将知识面拓宽,毕竟技术都是相通的,…

【Excle数据透视】如何用含有单元格的数据来创建数据透视

取消合并单元格,填充相同内容项,然后创建数据透视表. 如下图:需要使用数据创建数据透视表 步骤一 开始→格式刷,然后对单元格区域G2:G15使用格式刷功能,保留合并单元格格式 步骤二 选中A2:A18区…

css 超出文字头尾相接滚动_前端的一些雕虫小技,从100%和滚动条说起

1、100%和滚动条当我们在css中把html和body同时设为100%时,会出现滚动条html,body {width: 100%;height: 100%;}原因是html和body之间有8px的margin,这个margin怎么来的呢,我们在chrome中用F12看一下这个8px的margin来自于user agent stylesh…

小学生都能看懂的FFT!!!

小学生都能看懂的FFT!!! 前言 在创新实践中心偷偷看了一天FFT资料后,我终于看懂了一点。为了给大家提供一份简单易懂的学习资料,同时也方便自己以后复习,我决定动手写这份学习笔记。 食用指南: …

ComboBox自动补全小技巧

网上看的自动补全实在是太麻烦,有时候还用到了第三方控件,但是现在我的需求是这样的 有一个Person类,其中有Code、Name两个属性 Person需要绑定到ComboBox中,在ComboBox中输入Code时,即自动补全相应的Name 想了半天&am…

可做fft分析吗_小吃店生意好做吗,小吃业行情分析

现在创业已经成为一种风尚,不少创业者都打算开一家小吃店,现在小吃店的生意好做吗?开小吃店有没有前景呢?中国人一直以来都非常看重“吃”,民以食为天,食物就是中国人生存的灵魂所在。基本上每个城市、每个…