本地数据

jason 0220098b61 update 1 gadu atpakaļ
apis d14b5623ef init project 1 gadu atpakaļ
common.in 56e7c85761 update 1 gadu atpakaļ
conf 2d34003e01 change 1 gadu atpakaļ
consts d14b5623ef init project 1 gadu atpakaļ
docker d14b5623ef init project 1 gadu atpakaļ
errors d14b5623ef init project 1 gadu atpakaļ
impl 0220098b61 update 1 gadu atpakaļ
log 0220098b61 update 1 gadu atpakaļ
model 49032214bf change name 1 gadu atpakaļ
sh d14b5623ef init project 1 gadu atpakaļ
tests d14b5623ef init project 1 gadu atpakaļ
utils ec5ee34253 update format 1 gadu atpakaļ
CHANGELOG.md d14b5623ef init project 1 gadu atpakaļ
Dockerfile.in d14b5623ef init project 1 gadu atpakaļ
Makefile d14b5623ef init project 1 gadu atpakaļ
README.md d14b5623ef init project 1 gadu atpakaļ
VERSION d14b5623ef init project 1 gadu atpakaļ
app.spec.in d14b5623ef init project 1 gadu atpakaļ
confbuild.sh d14b5623ef init project 1 gadu atpakaļ
go.mod 17adfaecb0 change 1 gadu atpakaļ
go.sum 0c87f1c4a9 change 1 gadu atpakaļ
imagebuild.sh d14b5623ef init project 1 gadu atpakaļ
main.go 4343e22eb0 Merge branch 'master' of ssh://47.108.30.231:8084/gd-backend/gd_adm_data 1 gadu atpakaļ
rpmbuild.sh d14b5623ef init project 1 gadu atpakaļ

README.md

msdemo

本工程是微服务的demo。

编译依赖

必要操作

# 取出共有第三方包工程,其中 /path/to 需要自己指定
# *** 如果其它工程做了软链接,则不需重复以下三步 ***
mkdir -P /path/to/repository/commons
cd /path/to/repository/commons
git clone http://gitlab.chejinjia.cn/repository/commons/golangpkgs.git

# 建立业务工程,并关联golangpkgs
mkdir -p /path/to/repository/projects/src
export GOPATH=/path/to/repository/projects
cd /path/to/repository/projects/src
ln -s /path/to/repository/commons/golangpkgs/vendor/ . # 如果其它工程做了软链接,则忽略此行
git clone git@gitlab.chejinjia.cn:repository/your_project.git # 本工程的链接
go build
...

关于日志

日志使用步骤

1. 在要打印日志的包目录下,拷贝一份logger.go,并修改logger所属包名:

./impl/arith
└── logger.go
./common.in/task
└── logger.go

2. 在main.go中添加如下代码:

// 通用logger
commonLogger := logger.InitLogger(runmode, fmt.Sprintf("logs/%s.log", appname),
    maxSize, maxBackups, maxAge, disableStacktrace)
// 单独设置
accessLogger := logger.NewInfoLogger(runmode, fmt.Sprintf("logs/%s-access.log", appname),
    maxSize, maxBackups, maxAge)

// 设置需要使用logger的地方
// common日志
arith.SetLogger(commonLogger)
// access日志
task.SetLogger(accessLogger)

错误日志规范

l.Error("业务",
        zap.String("操作", "操作名称"),
        zap.String("参数或字段", "参数列表以及值"),
        zap.String("error", err.Error()))

mysql 错误日志

l.Error("mysql",
    zap.String("sql", "SELECT from c_device"), // 操作+表名
    zap.String("fields", utils.MarshalJsonString(field1, value1, field2, value2)),
    zap.String("error", err.Error()))

redis 错误日志

l.Error("redis",
    zap.String("cmd", "SETEX"), // 命令
    zap.String("args", utils.MarshalJsonString(key, seconds, value)),
    zap.String("error", err.Error()))

调用rpc 错误日志

l.Error("rpc",
    zap.String("call", "Arith.Add"), // 注册名.方法名
    zap.String("args", utils.MarshalJsonString(req)),
    zap.String("error", err.Error()))

内部函数调用 错误日志

l.Error("func",
    zap.String("call", "Add"), // 函数名
    zap.String("args", utils.MarshalJsonString(arg1, arg2, arg3)),
    zap.String("error", err.Error()))