阿小信大人的头像
做你说过的,说你能做的 阿小信大人

在zap中集成Sentry自动上报Error事件2020-03-15 17:59

截屏2020-03-15 17 48 56

在项目中发生了错误时我们都会打印Error级别的日志,但是即使有日志采集,在对发生Error时的告警通知和信息采集都不一定能快速且完善,目前对日志的告警也只是限于一些指标上的阈值告警,对于一些偶发或者非必现的Error其实我们还是很难及时发现,使用[Sentry](https://sentry.io)可以解决这类痛点,在可能产生Error的地方我们除了打印Error日志,同时还会对Error事件进行Sentry上报,Sentry会记录详细的相关issue并告警通知。

在golang的项目中我对易用性和性能及流行程度的综合考虑下选择使用[zap](https://godoc.org/go.

......
#Golang#   评论[0]阅读全文[1355]

zap源码阅读笔记2020-01-16 17:49

## zap.Logger

日志Logger结构体,以此调用打印日志内容,定义如下:

```
type Logger struct {
core zapcore.Core

development bool
name string
errorOutput zapcore.WriteSyncer

addCaller bool
addStack zapcore.LevelEnabler

callerSkip int
}
```

## zapcore.Entry

日志主体内容结构体,表示一条具体日志,定义如下:

......
#Golang#   评论[0]阅读全文[1254]

我和Dave有个约会2019-04-29 18:54

### start

今天上午参加了Go语言项目开发成员Dave Cheney的分享。

![](https://wx1.sinaimg.cn/large/67ac78cfgy1g2jogclys2j20tg0nqaf6.jpg)

分享的主题是”High Performance Go: Two tools, three types of profiling in 45 minutes”

![](https://wx1.sinaimg.cn/large/67ac78cfgy1g2joihbvqzj20zk0qn7wh.jpg)

分享的内容来自 非常有干货的分享!

......
#Golang#   评论[0]阅读全文[1586]

Go中组织结构体以节省内存2018-12-11 15:51

Go中组织结构体以节省内存
===================

有一个类似如下的结构体 `myStruct`:

package main

import (
"fmt"
"reflect"
"unsafe"
)

type myStruct struct {
myBool bool
myFloat float64
myInt int32
}

func main() {
a :=

......
#Golang#   评论[0]阅读全文[2132]

pink-lady:Gin WebApp Project Skeleton2018-11-16 23:33

使用go进行web开发,前期经过一些选型,最终决定使用gin这个框架来做开发,gin和flask这类框架很像,一个文件就能起一个服务,但是当项目变得庞大复杂,一个文件是很难维护的,通常我们需要将其拆分为多个目录来存放代码,根据自己的需求实现各种mvc之类的模式。

pink-lady是根据我个人习惯整理而成的代码结构。开发时主要可以总结为ASM(apis services models)模式,开发时只需要关注这三个地方,主要流程是在apis中配置路由routes,编写路由处理方法,处理方法细分为apis接入层和可复用的services层,models定义db数据表结构。

pink-l

......
#Golang#   评论[0]阅读全文[2466]

Golang Gorm中自定义Time类型的JSON字段格式2018-11-05 13:18

Golang中使用gorm时,通过加入gorm.Model到自己的struct来定义一个model。
Gorm是这样定义[Model](https://github.com/jinzhu/gorm/blob/master/model.go#L9)的:

:::go
type Model struct {
ID uint `gorm:"primary_key"`
CreatedAt time.Time
UpdatedAt time.Time
DeletedAt *time.Time `s

......
#Golang#   评论[2]阅读全文[10374]

Golang变量作用域踩坑记录2018-10-26 11:14

这是一篇记录实际应用中遇到的变量作用域问题,golang的学习资料中很多都提到过这个知识点,但是实际使用中还是不小心就忽略掉坑里了。

背景:打算封装一个gorm的初始化连接db的操作放在一个包里,通过调用这个初始化函数为包里面的全局变量`var DB *gorm.DB` 赋值来作为操作db的句柄

错误写法:

:::golang

var DB *gorm.DB

func InitGormDB(engine, addr, name, username, password string) {

var dsn string

......
#Golang#   评论[0]阅读全文[2530]

Golang web框架选型2018-10-17 18:16

老板说要选一个go的web框架来用,所以记录一下选择理由。

go本身就具备了web开发的特性,`net/http`包+httprouter开发一个apiserver已经足够了,写好包含`http.ResponseWriter`和`*http.Request`参数的业务处理函数,通过`http.HandleFunc`注册路由就可以了。

当前流行的框架:结合github关键字`go web` `go web framework`搜索和`awesome-go`中提及的框架,选出了当前比较start数较多且最近一直在更新的框架

按start数排名:gin 21.2k、beego 17

......
#Golang#   评论[0]阅读全文[5621]