logger

package module
v0.0.0-...-e7c7069 Latest Latest
Warning

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

Go to latest
Published: Mar 5, 2024 License: GPL-3.0 Imports: 21 Imported by: 23

README

Logger 组件

说明

本包为zap日志组件封装,用于golang项目统一日志输出和收集。

使用示例

  • 日志组件使用:zap
  • 日志输出选项:stdout stderr | 日志目录 (指定存储目录)
  • 日志级别选项:panic fatal error warning info debug
  • 生产环境级别:info
  • 开发测试级别:debug
  • 日志输出格式:json
// instance
// 第一参数为日志级别
// 第二参数为日志存储路径,文件形式记录日志则是文件路径,标准输出则 stderr
var log = logger.New("debug", "stderr")

// 直接使用记录一段字符串日志
log.Debug("debug data")
log.Error("debug error")

// 直接使用底层zap记录多字段日志,性能更佳,推荐方式
log.Zap.Info(
    "msg",
    zap.String("module", "module-can-use-kibana"),
    zap.String("sql", "your sql"),
    zap.Int("num", 101),
)

本库亦封装实现了rediselasticgorm的logger实现,以使用底层zap日志组件。

Documentation

Index

Constants

View Source
const (
	XRequestID          = "x-request-id"       // 请求ID名称
	XRequestIDPrefix    = "R"                  // 当使用纳秒时间戳作为请求ID时拼接的前缀字符串
	TextGinRouteInit    = "gin.route.init"     // gin 路由注册日志标记
	TextGinPanic        = "gin.panic.recovery" // gin panic日志标记
	TextGinRequest      = "gin.request"        // gin request请求日志标记
	TextGinResponseFail = "gin.response.fail"  // gin 业务层面失败响应日志标记
	TextGinPreflight    = "gin.preflight"      // gin preflight 预检options请求类型日志
)

XRequestID 为每个请求分配的请求编号key和名称 1、优先从header头里读由nginx维护的并且转发过来的x-request-id 2、如果读取不到则使用当前纳秒时间戳字符串加前缀字符串

Variables

This section is empty.

Functions

func GetRequestBody

func GetRequestBody(ctx *gin.Context, strip bool) string

GetRequestBody 获取请求body体

  • strip 是否要将JSON类型的body体去除反斜杠和大括号,以便于Es等不做深层字段解析而当做一个字符串

func GetRequestID

func GetRequestID(ctx *gin.Context) string

GetRequestID 暴露方法:读取当前请求ID

func GinCors

func GinCors(ctx *gin.Context)

GinCors 为gin开启跨域功能<尽量通过nginx反代处理>

func GinLogHttpFail

func GinLogHttpFail(ctx *gin.Context, err error)

GinLogHttpFail gin框架失败响应日志处理

func GinLogger

func GinLogger(appendHandle func(ctx *gin.Context) []zap.Field) func(ctx *gin.Context)

GinLogger zap实现的gin-logger日志中间件<gin.HandlerFunc的实现>

  • appendHandle 额外补充的自定义添加字段方法,可选参数

func GinPrintInitRoute

func GinPrintInitRoute(httpMethod, absolutePath, handlerName string, nuHandlers int)

GinPrintInitRoute 为gin自定义注册路由日志输出

注意:因gin路由注册信息输出只有dev模式才有
若为了全面记录路由注册日志,调用 gin.SetMode 方法代码可写在路由注册之后,但就会出现gin的开发模式提示信息

func GinRecovery

func GinRecovery(ctx *gin.Context)

GinRecovery zap实现的gin-recovery日志中间件<gin.HandlerFunc的实现>

func IsModifyMethod

func IsModifyMethod(method string) bool

IsModifyMethod 检查当前请求方式否为修改类型

  • 即判断请求是否为post、put、patch、delete

func NewGorm2Logger

func NewGorm2Logger() logger.Interface

NewGorm2Logger 创建gorm2的logger实例

Types

type DBLogger

type DBLogger struct{}

DBLogger gorm日志记录器

func (DBLogger) Print

func (l DBLogger) Print(values ...interface{})

Print db log record

type EsLogger

type EsLogger struct{}

EsLogger es 日志记录器

func (EsLogger) Printf

func (l EsLogger) Printf(format string, values ...interface{})

Printf Print es log record

type InterFace

type InterFace interface {
	Info(msg string)
	Debug(msg string)
	Error(msg string)
}

InterFace 通用logger接口定义

type Logger

type Logger struct {
	Zap *zap.Logger
	// contains filtered or unexported fields
}

Logger logger封装, 实现第三方库的日志接口

func New

func New(level, path, recordField string) *Logger

New 初始化单例logger

-- level 日志级别:debug、info、warning 等
-- path  文件形式的日志路径 or 标准输出 stderr
-- recordField  指定xxxRecord系列方法额外添加分门别类的方法的字段名称

func (*Logger) Debug

func (l *Logger) Debug(msg string)

func (*Logger) DebugRecord

func (l *Logger) DebugRecord(module string, msg string, filed ...zap.Field)

DebugRecord 分module记录日志debug级别日志

-- module   自定义module名称,即添加至日志JSON中的module的值,便于Es按module字段值分类别类检索
-- msg      日志msg
-- ...filed 可选的自定义添加的字段

func (*Logger) Debugf

func (l *Logger) Debugf(format string, args ...interface{})

func (*Logger) Error

func (l *Logger) Error(msg string)

func (*Logger) ErrorRecord

func (l *Logger) ErrorRecord(module string, msg string, filed ...zap.Field)

ErrorRecord 分module记录日志error级别日志

-- module   自定义module名称,即添加至日志JSON中的module的值,便于Es按module字段值分类别类检索
-- msg      日志msg
-- ...filed 可选的自定义添加的字段

func (*Logger) Errorf

func (l *Logger) Errorf(format string, args ...interface{})

func (*Logger) Info

func (l *Logger) Info(msg string)

func (*Logger) InfoRecord

func (l *Logger) InfoRecord(module string, msg string, filed ...zap.Field)

InfoRecord 分module记录日志info级别日志

-- module   自定义module名称,即添加至日志JSON中的module的值,便于Es按module字段值分类别类检索
-- msg      日志msg
-- ...filed 可选的自定义添加的字段

func (*Logger) Infof

func (l *Logger) Infof(format string, args ...interface{})

func (*Logger) Print

func (l *Logger) Print(v ...interface{})

func (*Logger) Printf

func (l *Logger) Printf(format string, v ...interface{})

func (*Logger) Warn

func (l *Logger) Warn(msg string)

func (*Logger) WarnRecord

func (l *Logger) WarnRecord(module string, msg string, filed ...zap.Field)

WarnRecord 分module记录日志warn级别日志

-- module   自定义module名称,即添加至日志JSON中的module的值,便于Es按module字段值分类别类检索
-- msg      日志msg
-- ...filed 可选的自定义添加的字段

func (*Logger) Warnf

func (l *Logger) Warnf(format string, args ...interface{})

type RedisHook

type RedisHook struct{}

RedisHook redis hook implement

func (RedisHook) AfterProcess

func (r RedisHook) AfterProcess(ctx context.Context, cmd redis.Cmder) error

AfterProcess redis执行命令后hook

func (RedisHook) AfterProcessPipeline

func (r RedisHook) AfterProcessPipeline(ctx context.Context, cmdItems []redis.Cmder) error

AfterProcessPipeline redis执行pipe后hook

func (RedisHook) BeforeProcess

func (r RedisHook) BeforeProcess(ctx context.Context, cmd redis.Cmder) (context.Context, error)

BeforeProcess redis执行命令前hook

func (RedisHook) BeforeProcessPipeline

func (r RedisHook) BeforeProcessPipeline(ctx context.Context, cmdItems []redis.Cmder) (context.Context, error)

BeforeProcessPipeline redis执行pipe前hook

Jump to

Keyboard shortcuts

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