golog

module
v1.0.4 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Feb 3, 2020 License: Apache-2.0

README

Log

Build Status Go Report Card LICENSE Godoc

使用CircleCI进程CI Pipeline校验,Go Report Card进行Golang项目代码分析

  1. CircleCI: https://circleci.com/gh/chenguolin/golog/tree/master
  2. Go Report Card: https://goreportcard.com/report/github.com/chenguolin/golog

golog 是一个golang 日志框架,内部使用uber开源的zap框架, 性能好灵活性高。

  1. 支持不同log级别输出
  2. 支持不同io.Writer输出
  3. 支持HTTP Service Access Log定制输出
  4. 支持输出到文件并按固定格式切割文件

Sample

// use 1
// 默认level为Info
// 默认使用JSONEncoder
// 默认输出到Stdout
log.Info("use 1", log.String("name", "chenguolin"))

// use 2
// level设置为Info
// 使用Console Encodr
// 输出到Stderr
logger, err := log.NewLogger(log.WithInfoLevel(), log.WithConsoleEncoder(), log.WithOutput(os.Stderr))
if err != nil {
    panic(err)
}
log.SetLogger(logger)
log.Info("use 2", log.String("name", "chenguolin"))

AccessLog

// set logger
fileName := os.Getenv("GOPATH") + "/src/gitlab.local.com/log/sample/access.log"
f, err := os.OpenFile(fileName, os.O_RDWR|os.O_APPEND, 0660)
if err != nil {
    fmt.Printf("open file error", err)
}
defer f.Close()

logger, err := log.NewLogger(log.WithOutput(io.Writer(f)), log.WithJSONEncoder(), log.WithInfoLevel())
if err != nil {
    fmt.Printf("log NewLogger error", err)
}

// start gin HTTP server
r := gin.New()
r.GET("/ping", log.AccessLogFunc(log), HelloServer)
// listen and serve on 0.0.0.0:8899
r.Run(":8899")

RotateWriter

// new rotate writer
fileName := os.Getenv("GOPATH") + "/src/gitlab.local.com/log/sample/access.log"
// 按小时切割
writer, err := log.NewRotateWriter(fileName, "20060102-15")
if err != nil {
    fmt.Println("log NewRotateWriter error", err)
}

// new logger
logger, err := log.NewLogger(log.WithOutput(writer), log.WithJSONEncoder(), log.WithInfoLevel())
if err != nil {
    fmt.Printf("log NewLogger error", err)
}

// start gin HTTP server
r := gin.New()
r.GET("/ping", log.AccessLogFunc(log), HelloServer)
// listen and serve on 0.0.0.0:8899
r.Run(":8899")

CI Workflow Check

  1. gocyclo: 校验代码复杂度
  2. gofmt: 校验代码是否都已经格式化
  3. golint: 校验代码风格规范是否按照指定标准
  4. gosimple: 校验代码是否可以简化
  5. govet: 代码静态校验
  6. misspell: 校验是否有英文单词拼写错误
  7. unused: 校验是否有未使用变量、常量、函数、结构体等
  8. gotest: 单元测试校验

Gitlab CI

如果使用Gitlab,也可以通过.gitlab-ci.yml运行Gitlab CI Pipeline,详细介绍请参考下面2篇文章

  1. Gitlab 安装使用
  2. Gitlab CI和CD配置

Directories

Path Synopsis

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL