logs

package
v0.0.0-...-7e7023f Latest Latest
Warning

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

Go to latest
Published: Jul 16, 2021 License: MIT Imports: 20 Imported by: 0

Documentation

Overview

Package logs 简单封装了在日常使用 zap 打日志时的常用方法.

提供快速使用 zap 打印日志的全部方法,所有日志打印方法开箱即用

提供多种快速创建 logger 的方法

支持在使用 Error 及其以上级别打印日志时自动将该事件上报到 Sentry

支持从 context.Context/gin.Context 中创建、获取带有 Trace ID 的 logger [go语言zap日志自定义输出](https://docs.lvrui.io/2020/03/25/go语言zap日志自定义输出/)

Index

Constants

View Source
const (
	// SentryDSNEnvKey 引入包时默认创建 logger 将尝试从该环境变量名中获取 sentry dsn
	SentryDSNEnvKey = "SENTRY_DSN"
	// SentryDebugEnvKey 尝试从该环境变量中获取 sentry 是否开启 debug 模式
	SentryDebugEnvKey = "SENTRY_DEBUG"
	// AtomicLevelAddrEnvKey 初始化时尝试获取该环境变量用于设置动态修改日志级别的 http 服务运行地址
	AtomicLevelAddrEnvKey = "ATOMIC_LEVEL_ADDR"
)
View Source
const (
	// LogFilename 默认日志文件名
	LogFilename = "/tmp/logs.log"
)

Variables

View Source
var (
	// CtxLoggerName define the ctx logger name
	CtxLoggerName = "ctx_logger"
	// CtxTraceKey define the trace id key
	CtxTraceKey = "trace"
)
View Source
var (

	// EncoderConfig 默认的日志字段名配置
	EncoderConfig = zapcore.EncoderConfig{
		TimeKey:        "time",
		LevelKey:       "level",
		NameKey:        "logger",
		CallerKey:      "caller",
		MessageKey:     "msg",
		StacktraceKey:  "stacktrace",
		LineEnding:     zapcore.DefaultLineEnding,
		EncodeLevel:    zapcore.CapitalLevelEncoder,
		EncodeTime:     TimeEncoder,
		EncodeDuration: zapcore.SecondsDurationEncoder,
		EncodeCaller:   CallerEncoder,
	}

	// AtomicLevelMap string level mapping zap AtomicLevel
	AtomicLevelMap = map[string]zap.AtomicLevel{
		"debug":  zap.NewAtomicLevelAt(zap.DebugLevel),
		"info":   zap.NewAtomicLevelAt(zap.InfoLevel),
		"warn":   zap.NewAtomicLevelAt(zap.WarnLevel),
		"error":  zap.NewAtomicLevelAt(zap.ErrorLevel),
		"dpanic": zap.NewAtomicLevelAt(zap.DPanicLevel),
		"panic":  zap.NewAtomicLevelAt(zap.PanicLevel),
		"fatal":  zap.NewAtomicLevelAt(zap.FatalLevel),
	}
)

Functions

func AttachCore

func AttachCore(l *zap.Logger, c zapcore.Core) *zap.Logger

AttachCore add a core to zap logger

func CallerEncoder

func CallerEncoder(caller zapcore.EntryCaller, enc zapcore.PrimitiveArrayEncoder)

CallerEncoder serializes a caller in package/file:funcname:line format

func CloneLogger

func CloneLogger(name string, fields ...zap.Field) *zap.Logger

CloneLogger return the global logger copy which add a new name

func CtxLogger

func CtxLogger(c context.Context, fields ...zap.Field) *zap.Logger

CtxLogger get the ctxLogger in context

func CtxTraceId

func CtxTraceId(c context.Context) string

CtxTraceId get trace id from context

func Debug

func Debug(c context.Context, msg string, fields ...zap.Field)

Debug 尝试从 Context 中获取带 trace id 的 logger 记录 debug 级别的日志

func Debugf

func Debugf(c context.Context, template string, args ...interface{})

Debugf 尝试从 Context 中获取带 trace id 的 sugared logger 来模板字符串记录 debug 级别的日志 logs.Debugf(nil, "str:%s", "abd")

func Debugs

func Debugs(c context.Context, args ...interface{})

Debugs 尝试从 Context 中获取带 trace id 的 sugared logger 来记录 debug 级别的日志 logs.Debugs(nil, "abc", 123)

func Debugw

func Debugw(c context.Context, msg string, kvs ...interface{})

Debugw 尝试从 Context 中获取带 trace id 的 sugared logger 来 kv 记录 debug 级别的日志 logs.Debugw(nil, "msg", "k1", "v1", "k2", "v2")

func Error

func Error(c context.Context, msg string, fields ...zap.Field)

Error 尝试从 Context 中获取带 trace id 的 logger 记录 error 级别的日志

func Errorf

func Errorf(c context.Context, template string, args ...interface{})

Errorf 尝试从 Context 中获取带 trace id 的 sugared logger 来模板字符串记录 error 级别的日志

func Errors

func Errors(c context.Context, args ...interface{})

Errors 尝试从 Context 中获取带 trace id 的 sugared logger 来记录 Error 级别的日志

func Errorw

func Errorw(c context.Context, msg string, kvs ...interface{})

Errorw 尝试从 Context 中获取带 trace id 的 sugared logger 来 kv 记录 error 级别的日志

func ExtraField

func ExtraField(kvs ...interface{}) zap.Field

ExtraField 顺序传入 kv 对,返回以 extra 为 key ,传入的 kv 对组成的 map 为值的 zap Reflect Field 在需要固定日志外层 json 字段有需要添加新字段时可以使用

func Fatal

func Fatal(c context.Context, msg string, fields ...zap.Field)

Fatal 尝试从 Context 中获取带 trace id 的 logger 记录 fatal 级别的日志

func Fatalf

func Fatalf(c context.Context, template string, args ...interface{})

Fatalf 尝试从 Context 中获取带 trace id 的 sugared logger 来模板字符串记录 fatal 级别的日志

func Fatals

func Fatals(c context.Context, args ...interface{})

Fatals 尝试从 Context 中获取带 trace id 的 sugared logger 来记录 Fatal 级别的日志

func Fatalw

func Fatalw(c context.Context, msg string, kvs ...interface{})

Fatalw 尝试从 Context 中获取带 trace id 的 sugared logger 来 kv 记录 fatal 级别的日志

func FuncName

func FuncName(pc uintptr) string

FuncName 返回调用本函数的函数名称 pc runtime.Caller 返回的第一个值

func Info

func Info(c context.Context, msg string, fields ...zap.Field)

Info 尝试从 Context 中获取带 trace id 的 logger 记录 info 级别的日志

func Infof

func Infof(c context.Context, template string, args ...interface{})

Infof 尝试从 Context 中获取带 trace id 的 sugared logger 来模板字符串记录 info 级别的日志

func Infos

func Infos(c context.Context, args ...interface{})

Infos 尝试从 Context 中获取带 trace id 的 sugared logger 来记录 info 级别的日志

func Infow

func Infow(c context.Context, msg string, kvs ...interface{})

Infow 尝试从 Context 中获取带 trace id 的 sugared logger 来 kv 记录 info 级别的日志

func NewCtxLogger

func NewCtxLogger(c context.Context, logger *zap.Logger, traceId string) (context.Context, *zap.Logger)

NewCtxLogger return a context with logger and trace id and a logger with trace id

func NewLogger

func NewLogger(options Options) (*zap.Logger, error)

NewLogger return a zap Logger instance

func Panic

func Panic(c context.Context, msg string, fields ...zap.Field)

Panic 尝试从 Context 中获取带 trace id 的 logger 记录 panic 级别的日志

func Panicf

func Panicf(c context.Context, template string, args ...interface{})

Panicf 尝试从 Context 中获取带 trace id 的 sugared logger 来模板字符串记录 panic 级别的日志

func Panics

func Panics(c context.Context, args ...interface{})

Panics 尝试从 Context 中获取带 trace id 的 sugared logger 来记录 Panic 级别的日志

func Panicw

func Panicw(c context.Context, msg string, kvs ...interface{})

Panicw 尝试从 Context 中获取带 trace id 的 sugared logger 来 kv 记录 panic 级别的日志

func PublicIP

func PublicIP() string

func RegisterLumberjackSink

func RegisterLumberjackSink(sink *LumberjackSink) error

RegisterLumberjackSink 注册 lumberjack sink 在 OutputPaths 中指定输出为 sink.Scheme://log_filename 即可使用 path url 中不指定日志文件名则使用默认的名称 一个 scheme 只能对应一个文件名,相同的 scheme 注册无效,会全部写入同一个文件

func ReplaceLogger

func ReplaceLogger(newLogger *zap.Logger) func()

ReplaceLogger 替换默认的全局 logger 为传入的新 logger 返回函数,调用它可以恢复全局 logger 为上一次的 logger

func ServerIP

func ServerIP() string

ServerIP 获取当前 IP

func SetLevel

func SetLevel(lvl string)

SetLevel 使用字符串级别设置默认 logger 的 atomic level

func TextLevel

func TextLevel() string

TextLevel 返回默认 logger 的 字符串 level

func TimeEncoder

func TimeEncoder(t time.Time, enc zapcore.PrimitiveArrayEncoder)

TimeEncoder 自定义日志时间格式, 不带时区信息, YYYY-mm-dd H:M:S.xxxxxx

func Warn

func Warn(c context.Context, msg string, fields ...zap.Field)

Warn 尝试从 Context 中获取带 trace id 的 logger 记录 warn 级别的日志

func Warnf

func Warnf(c context.Context, template string, args ...interface{})

Warnf 尝试从 Context 中获取带 trace id 的 sugared logger 来模板字符串记录 warn 级别的日志

func Warns

func Warns(c context.Context, args ...interface{})

Warns 尝试从 Context 中获取带 trace id 的 sugared logger 来记录 warn 级别的日志

func Warnw

func Warnw(c context.Context, msg string, kvs ...interface{})

Warnw 尝试从 Context 中获取带 trace id 的 sugared logger 来 kv 记录 warn 级别的日志

func ZapFields

func ZapFields(data map[string]interface{}) []zap.Field

Types

type AtomicLevelServerOption

type AtomicLevelServerOption struct {
	Addr     string // http 动态修改日志级别服务运行地址
	Path     string // 设置 url path ,可选
	Username string // 请求时设置 basic auth 认证的用户名,可选
	Password string // 请求时设置 basic auth 认证的密码,可选,与 username 同时存在才开启 basic auth
}

AtomicLevelServerOption AtomicLevel server 相关配置

type LumberjackSink

type LumberjackSink struct {
	*lumberjack.Logger
	Scheme string
}

LumberjackSink 将日志输出到 lumberjack 进行 rotate

func NewLumberjackSink

func NewLumberjackSink(scheme, filename string, maxAge, maxBackups, maxSize int, compress, localtime bool) *LumberjackSink

NewLumberjackSink 创建 LumberjackSink 对象

func (LumberjackSink) Sync

func (LumberjackSink) Sync() error

Sync lumberjack Logger 默认已实现 Sink 的其他方法,这里实现 Sync 后就成为一个 Sink 对象

type Options

type Options struct {
	Name              string                  // logger 名称
	Level             string                  // 日志级别 debug, info, warn, error dpanic, panic, fatal
	Format            string                  // 日志格式
	OutputPaths       []string                // 日志输出位置
	InitialFields     map[string]interface{}  // 日志初始字段
	DisableCaller     bool                    // 是否关闭打印 caller
	DisableStacktrace bool                    // 是否关闭打印 stackstrace
	EncoderConfig     *zapcore.EncoderConfig  // 配置日志字段 key 的名称
	LumberjackSink    *LumberjackSink         // lumberjack sink 支持日志文件 rotate
	AtomicLevelServer AtomicLevelServerOption // AtomicLevel server 相关配置
}

Options new logger options

Jump to

Keyboard shortcuts

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