上一节:Go语言Echo Web框架8-JWT 这一节介绍日志
echo自带的日志中间件记录有关每个HTTP请求的信息
日志中间件
用法
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自带的日志中间件的功能在日常开发中已经足够使用。
在项目开发中,都不可避免的使用到日志。没有日志虽然不会影响项目的正确运行,但是没有日志的项目可以说是不完整的。日志在调试,错误或者异常定位,数据分析中的作用是不言而喻的。
1. 记录用户操作的审计日志,甚至有的时候就是监管部门的要求。
2. 快速定位问题的根源
3. 追踪程序执行的过程。
4. 追踪数据的变化
5. 数据统计和性能分析
6. 采集运行环境数据
对应视频演示:Go语言Echo Web框架9_视频_日志
下一节:Go语言Echo Web框架10-文件上传下载