一、关于 zap :https://blog.csdn.net/skh2015java/article/details/81771808 Lumberjack是一个Go包,用于将日志写入滚动文件。 zap 不支持文件归档,如果要支持文件按大小或者时间归档,需要使用lumberjack,lumberjack也是zap官方推荐的。 1、main函数: package main import ( logCondf "Zap/Conf" "Zap/gb" "github.com/gin-gonic/gi...
-
golang zap+zapcore+lumberjack 滚动输出日志
-
Go官方进程诊断工具gops详解
gops简介gops 是Go团队提供的命令行工具,它可以用来获取go进程运行时信息。 可以查看: 当前有哪些go语言进程,哪些使用gops的go进程 进程的概要信息 进程的调用栈 进程的内存使用情况 构建程序的Go版本 运行时统计信息 可以获取: trace cpu profile和memory profile 还可以: 让进程进行1次GC 设置GC百分比 示例代码使用Options配置agent。 123456789101112131415161718192021222324252627pac...
-
go-bindata:go 语言的静态资源嵌入
单文件无依赖发布,是 go 语言一项杀手级特性。看着不怎么起眼,但被应用发布和运维折磨过的朋友,会明白这意味着什么。 可没高兴多久,发现应用还是要引入各种静态资源。这时就要拿出 go-bindata 了。 本文没有一开始给出最佳实践,而是从最简单的做法开始,展示一点一点改进的过程。长度尽量精简,希望你看到最后。 壹、是什么项目主页:https://github.com/go-bindata/go-bindata 官方自述: This package converts any file into ...
-
Qmgo - 更好用的Go语言MongoDB driver
## Qmgo 最近,七牛CDN研发团队开源了[Qmgo](https://github.com/qiniu/qmgo) - Go语言的MongoDB driver,它基于[Mongo官方driver](https://github.com/mongodb/mongo-go-driver)实现,但是有着更好的易用性,设计上参考了老牌的driver [Mgo](https://github.com/go-mgo/mgo) (比如Mgo的链式调用)。 ## 背景 做Qmgo的初衷,来自于...
-
Golang指南:顶级Golang框架、IDE和工具列表
来自:码农网,译者:小峰链接:www.codeceo.com/article/golang-framework-ide-tools.html(点击尾部阅读原文前往)原文:https://dzone.com/articles/golang-guide-a-list-of-top-golang-frameworks-ides自推出以来,Google的Go编程语言(Golang)越来越受主流用户的欢迎。在2016年12月的一份调研中,3,595名受访者中有89%表明他们在工作中或工作以外用Go语言编程...
-
Go 每日一库之 cli
简介 cli是一个用于构建命令行程序的库。我们之前也介绍过一个用于构建命令行程序的库cobra。在功能上来说两者差不多,cobra的优势是提供了一个脚手架,方便开发。cli非常简洁,所有的初始化操作就是创建一个cli.App结构的对象。通过为对象的字段赋值来添加相应的功能。 cli与我们上一篇文章介绍的negroni是同一个作者urfave。 快速使用 cli需要搭配 Go Modules 使用。创建目录并初始化: $ mkdir cli && cd cli $ go mod init gith...
-
Github Actions 尝鲜
介绍 Github Actions是 github 官方推出的一款 CI(持续集成)工具,目前还处于Beta版本,需要申请内测资格才能使用,申请成功之后在自己的代码仓库就可以看到Actions了。 使用说明 这里简单介绍下 Github Actions中的概念,具体可以参考官方文档。 术语 workflow表示一次持续集成的过程 job表示构建任务,每个 workflow 可以由一个或者多个 job 组成,可支持并发执行 job,所有 job 执行完也就代表着 workflow 结束 step每...
-
Gocache:一个功能齐全且易于扩展的 Go 缓存库
在先前几周的时候,我完成了 [Gocache](https://github.com/eko/gocache),对于 Go 开发者而言,它是功能齐全且易于扩展的。 这个库的设计目的是为了解决在使用缓存或者使用多种(多级)缓存时所遇到的问题,它为缓存方案制定了一个标准。 ## 背景 当我一开始在为 GraphQL 的 Go 项目构建缓存时,该项目已经包含了一套有简单 API 的内存缓存,还使用了另外一套有不同 API 的内存缓存和加载缓存数据的代码,它们实际上都是在只做了同一件事...
-
2019年最火热的Golang项目
整理目的 记录用的人较多或者出镜率比较高的Golang项目。 如果我漏了你觉得重要的项目,麻烦帮我指出,我尽快补上,谢谢! 下面列表中的每一个项目都配上了Star增长趋势的图片,可以看出该项目的热度。 特别是与区块链相关的两个项目fabric和go-ethereum,能够明显看出区块链行业的起伏。 整理过程中收获: 1、了解到docker项目已经改名为moby,当前仓库为:https://github.com/moby/moby。 2、了解到时间序列数据库,库中每一个数据都有时间属性。 项目列表...
-
使用Go 语言开发必备的5大开源工具
开源最前线(ID:OpenSourceTop)编译链接:https://jaxenter.com/golang-open-source-tools-154472.html前不久,jaxenter发布了2018年最热门的十大技能技术其中,Go语言跻身前十,成2018年最受欢迎的技能之一。近日,jaxenter又从GitHub上精选了一些最好Golang工具,希望可以为喜欢用Go编程的开发者提供帮助,一起来看一下都有哪些工具上榜吧1、Go Reviverevive 是一个 Go 语言的代码质量检测工...
-
如何管理 Goroutine
为什么需要管理Goroutines 有效利用资源 虽然在Golang程序中,使用go func的方式开启一个goroutine协程是非常轻量级的操作。但是,完全不管理的任意创建,会造成很多资源的浪费。虽然golang本身提供了GC功能,但是GC释放是需要时机的。通过更加合理的创建goroutine对象可以更加有效的利用系统资源。 贴一个常见的资源问题: for { go func(){ fmt.Println("xxx") }() } 这段代码可能造成两类对象资源的浪费: 函数对象资源的浪费 g...
-
Go 每日一库之 validator
简介 今天我们来介绍一个非常实用的库——validator。validator用于对数据进行校验。在 Web 开发中,对用户传过来的数据我们都需要进行严格校验,防止用户的恶意请求。例如日期格式,用户年龄,性别等必须是正常的值,不能随意设置。 快速使用 先安装: $ go get gopkg.in/go-playground/validator.v10 后使用: package main import ( "fmt" "gopkg.in/go-playground/validator.v10" )...
-
Logrus源码阅读(2)--logrus生命周期
上一篇介绍logrus的基本用法, 本篇文章介绍logrus的整个生命周期 func main() { log.Info("hello logrus") } 从上面这个简单的例子, 追踪logrus的整个生命周期 初始化 // exported.go:L108 func Info(args ...interface{}) { std.Info(args...) } Info函数的参数是一个可变参数, 接收任意类型的参数 // exported.go:L11 var ( // std is the...
-
Logrus源码阅读(1)--基本用法
选择golang日志库时, 使用logrus的主要原因就是因为star比较多, 而且社区活跃度非常高. 在项目使用过程中, 发现logrus的调用入口, 性能, 插件, 自定义插件, 输出格式等都非常优秀, 值得学习一下 整体结构图 logrus 整体来看总共提供两种方式调用: logrus.Info("hello logrus") logrus.WithField(logruns.Fields{"key1":"v1"}).Info("hello logrus") 这些函数都在exported....
-
Go 语言中的快速检查测试
本系列的前文: https://itnext.io/types-and-specifications-c4d34ade6d5c “我们只能看到我们了解的东西。”—— [Goethe](https://en.wikipedia.org/wiki/Johann_Wolfgang_von_Goethe) 在我的上一篇关于测试的文章里,我通过使用 Clojure 这门非静态类型的语言介绍了快速检查的概念。尽管我说要优先考虑基于规范的检查而不是指望类型系统能够确保程序的正确性,但你可能会发现自...