脚本之家,脚本语言编程技术及教程分享平台!
分类导航

Python|VBS|Ruby|Lua|perl|VBA|Golang|PowerShell|Erlang|autoit|Dos|bat|

服务器之家 - 脚本之家 - Golang - Go语言日志内聚复用及gjson踩坑记录分享

Go语言日志内聚复用及gjson踩坑记录分享

2022-10-18 11:24王中阳Go Golang

这篇文章主要为大家介绍了Go语言日志内聚复用及gjson踩坑记录分享,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪

今天分享一下最近遇到的坑:

以下代码示例使用GoFrame框架,下文简称为gf框架。

统一日志格式

我有个不好的习惯,不管是之前开发PHP,还是现在开发GO,都习惯在开发过程中使用dump()打印数据进行调试。

本地调试虽然爽了,但是上到测试环境,甚至开发环境查不到日志,无法方便的定位问题可就傻了。

所以,我们需要养成关键步骤打印日志的好习惯,而且要统一日志格式。

打印日志

?
1
scm.Log.Info("测试的日志都打印在这里,res:%v", res)

封装打印日志的方法

指定日志打印目录

?
1
var Log = g.Log().Path(g.Log().GetPath() + "/scm")

通过gf提供的 g.log,再加上我们自己的封装,就能把日志按功能模块进行区分,方便定位问题。

内聚和复用

gf框架有一个设计:internal,即只允许内部调用的方法。

我觉得作者设计internal,一方面是处于安全考虑,另外一方面是处于高内聚的考虑。

但是,也不要过度内聚,我今天遇到的问题就是如何更好的实现代码复用。

所以在项目中抽取了公共方法目录shared,将原本写在internal中的可以复用的逻辑进行迁移。

gjson

今天发现一个非常好用的工具类:gjson

gjson 可以将json/xml/toml/等文件或者文件内容进行读取,创建对象,通过get方法可以取到对象对应的值

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
package main
import (
   "fmt"
   "github.com/gogf/gf/encoding/gjson"
)
 
func main() {
   jsonContent := `{"k5":1}`
   jsonObj, err := gjson.LoadContent(jsonContent)
   if err != nil {
      panic(err)
   }
   fmt.Println(jsonObj.Get("k5"))
}

打印结果

Go语言日志内聚复用及gjson踩坑记录分享

最近又在解决很坑人的问题,一直没能静下心来,总是想着一定是哪些小问题导致的,总想着快速解决问题。但是这种谋求快速解决问题的心理导致一直浮在问题表面,没有从根本上解决问题,反而一直在拖进度,让进度越来越慢。

以上就是Go语言日志内聚复用及gjson踩坑记录分享的详细内容,更多关于Go日志内聚复用gjson踩坑的资料请关注服务器之家其它相关文章!

原文链接:https://juejin.cn/post/7104258964732575775

延伸 · 阅读

精彩推荐
  • GolangGo 实现 WebSockets和什么是 WebSockets

    Go 实现 WebSockets和什么是 WebSockets

    这篇文章主要介绍了Go 实现 WebSockets和什么是 WebSockets,WebSockets 是构建实时应用程序的第一大解决方案,在线游戏、即时通讯、跟踪应用程序等,下文相关...

    宇宙之一粟11862022-09-28
  • Golanggolang 如何获取pem格式RSA公私钥长度

    golang 如何获取pem格式RSA公私钥长度

    这篇文章主要介绍了golang 如何获取pem格式RSA公私钥长度操作,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...

    天天water9312021-03-15
  • GolangGolang中文字符串截取函数实现原理

    Golang中文字符串截取函数实现原理

    在golang中可以通过切片截取一个数组或字符串,但是当截取的字符串是中文时,可能会出现问题,下面我们来自定义个函数解决Golang中文字符串截取问题...

    wdc7472020-05-14
  • GolangVS Code配置Go语言开发环境的详细教程

    VS Code配置Go语言开发环境的详细教程

    这篇文章主要介绍了VS Code配置Go语言开发环境的详细教程,本文通过实例代码图文相结合的形式给大家介绍的非常详细,对大家的学习或工作具有一定的参...

    JasonJI22862020-07-05
  • GolangPHP与Go语言之间的通信详解

    PHP与Go语言之间的通信详解

    相信大家都知道不同语言之间的通信方式有很多种,这篇文章详细的介绍了PHP与Go语言之间如何通信,有需要的朋友们可以参考借鉴,下面来一起看看吧。...

    Dorm_Script10362020-05-03
  • Golanggolang 实用库gotable的具体使用

    golang 实用库gotable的具体使用

    使用gotable框架以实现在CLI命令行界面中打印表格。本文就介绍一下golang 实用库gotable的使用,具有一定的参考价值,感兴趣的小伙伴们可以参考一下...

    kaliarch11002021-08-12
  • GolangGO语言实现批量压缩图片和水印

    GO语言实现批量压缩图片和水印

    这篇文章主要介绍了GO语言实现批量压缩图片和水印,主要用到了github.com/nfnt/resize这个第三方库,仅仅支持JPG图片格式,有相同需求的小伙伴参考下吧。...

    脚本之家2962020-04-24
  • GolangGolang自定义结构体转map的操作

    Golang自定义结构体转map的操作

    这篇文章主要介绍了Golang自定义结构体转map的操作,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...

    liangyaopei_12772021-03-10