logging

package
v0.0.0-...-e345738 Latest Latest
Warning

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

Go to latest
Published: Nov 15, 2022 License: MIT Imports: 25 Imported by: 0

Documentation

Index

Constants

View Source
const (
	// CtxLoggerName define the ctx logger name
	CtxLoggerName = "ctx"
	// TraceIDKeyName define the trace id keyname
	TraceIDKeyName = "trace_id"
	// TraceIDHeaderName ...
	TraceIDHeaderName = "X-Trace-Id"
)

CtxLoggerName ...

View Source
const (
	// SentryDSNEnvKey is sentry dsn environment variable, to init logger when import package
	SentryDSNEnvKey = "SENTRY_DSN"
	// SentryDebugEnvKey is environment variable to specified whether enable debug mode
	SentryDebugEnvKey = "SENTRY_DEBUG"
)

SentryDSNEnvKey ...

View Source
const (
	// LogFilename default logger file name
	LogFilename = "/tmp/logger.log"
)

LogFilename ...

Variables

View Source
var (
	// GormLoggerName is name of gorm logger
	GormLoggerName = "gorm"
	// GormLoggerCallerSkip caller skip
	GormLoggerCallerSkip = 3
)

GormLoggerName ...

View Source
var (

	// EncoderConfig default name config of log fields
	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 Modify TraceIDPrefix change change the prefix

func DPanic

func DPanic(msg string, fields ...zap.Field)

DPanic ...

func DPanicf

func DPanicf(template string, args ...interface{})

DPanicf ...

func Debug

func Debug(msg string, fields ...zap.Field)

Debug ...

func Debugf

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

Debugf ...

func Error

func Error(msg string, fields ...zap.Field)

Error ...

func Errorf

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

Errorf ...

func Fatal

func Fatal(msg string, fields ...zap.Field)

Fatal ...

func Fatalf

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

Fatalf ...

func FuncName

func FuncName(pc uintptr) string

FuncName get the first function name that called current function

func GetGinRequestBody

func GetGinRequestBody(c *gin.Context) []byte

GetGinRequestBody get request body

func GetGinTraceIDFromHeader

func GetGinTraceIDFromHeader(c *gin.Context) string

GetGinTraceIDFromHeader get key in request header of gin use for TraceIDKeyName as traceid

func GetGinTraceIDFromQueryString

func GetGinTraceIDFromQueryString(c *gin.Context) string

GetGinTraceIDFromQueryString get key in query string of gin use for TraceIDKeyName as traceid

func GinLogger

func GinLogger() gin.HandlerFunc

GinLogger 以默认配置生成 gin 的 Logger 中间件

func GinLoggerWithConfig

func GinLoggerWithConfig(conf GinLoggerConfig) gin.HandlerFunc

GinLoggerWithConfig logger middleware for gin

func Info

func Info(msg string, fields ...zap.Field)

Info ...

func Infof

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

Infof ...

func InitLogger

func InitLogger(name string, logDir string, debug bool) (*zap.Logger, error)

InitLogger init logger

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 NewSentryClient

func NewSentryClient(dsn string, debug bool) (*sentry.Client, error)

NewSentryClient return sentry client by sentrydsn

func NewSentryCore

func NewSentryCore(cfg SentryCoreConfig, sentryClient *sentry.Client) zapcore.Core

NewSentryCore new a sentry core

func Panic

func Panic(msg string, fields ...zap.Field)

Panic ...

func Panicf

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

Panicf ...

func RegisterLumberjackSink

func RegisterLumberjackSink(sink *LumberjackSink) error

RegisterLumberjackSink register lumberjack sink

func ReplaceLogger

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

ReplaceLogger replace global logger as newLogger

func SentryAttach

func SentryAttach(l *zap.Logger, sentryClient *sentry.Client) *zap.Logger

SentryAttach attach sentrycore

func SentryCaptureException

func SentryCaptureException(err error) error

SentryCaptureException ...

func SentryCaptureMessage

func SentryCaptureMessage(msg string) error

SentryCaptureMessage ...

func SentryClient

func SentryClient() *sentry.Client

SentryClient get sentry client

func ServerIP

func ServerIP() string

ServerIP get server IP

func SetLevel

func SetLevel(lvl string)

SetLevel set log level

func TextLevel

func TextLevel() string

TextLevel get logger level

func TimeEncoder

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

TimeEncoder define time format

func Warn

func Warn(msg string, fields ...zap.Field)

Warn ...

func Warnf

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

Warnf ...

Types

type GinLogDetails

type GinLogDetails struct {
	Timestamp     time.Time `json:"timestamp"`
	Method        string    `json:"method"`
	Path          string    `json:"path"`
	Query         string    `json:"query"`
	Proto         string    `json:"proto"`
	ContentLength int       `json:"content_length"`
	Host          string    `json:"host"`
	RemoteAddr    string    `json:"remote_addr"`
	RequestURI    string    `json:"request_uri"`
	Referer       string    `json:"referer"`
	UserAgent     string    `json:"user_agent"`
	ClientIP      string    `json:"client_ip"`
	ContentType   string    `json:"content_type"`
	HandlerName   string    `json:"handler_name"`
	StatusCode    int       `json:"status_code"`
	BodySize      int       `json:"body_size"`
	Latency       float64   `json:"latency"`
}

GinLogDetails gin log details used by middleware

type GinLoggerConfig

type GinLoggerConfig struct {
	// Optional. Default value is logger.defaultGinLogFormatter
	Formatter func(GinLogDetails) string
	// SkipPaths is a url path array which logs are not written.
	// Optional.
	SkipPaths []string
	// SkipPathRegexps skip path by regexp
	SkipPathRegexps []string
	// TraceIDFunc function to get or generate trace id
	// Optional.
	TraceIDFunc func(context.Context) string
	// InitFieldsFunc function to init logger fields,  key is field name, value is field value
	InitFieldsFunc func(context.Context) map[string]interface{}
	// Whether print details
	// Optional.
	EnableDetails bool
	// slow request threshold, output Error log if request handle time exeeded this value
	SlowThreshold time.Duration
	// contains filtered or unexported fields
}

GinLoggerConfig define GinLogger fields

type GormLogger

type GormLogger struct {
	// contains filtered or unexported fields
}

GormLogger use zap to print gorm log

func NewGormLogger

func NewGormLogger(logLevel zapcore.Level, slowThreshold time.Duration) GormLogger

NewGormLogger make GormLogger

func (GormLogger) CtxLogger

func (g GormLogger) CtxLogger(ctx context.Context) *zap.Logger

CtxLogger create ctxlogger

func (GormLogger) Error

func (g GormLogger) Error(ctx context.Context, msg string, data ...interface{})

Error implements gorm logger interface method

func (GormLogger) Info

func (g GormLogger) Info(ctx context.Context, msg string, data ...interface{})

Info implements gorm logger interface method

func (GormLogger) LogMode

func (g GormLogger) LogMode(gormLogLevel gormlogger.LogLevel) gormlogger.Interface

LogMode implements gorm logger interface method

func (GormLogger) Trace

func (g GormLogger) Trace(ctx context.Context, begin time.Time, fc func() (string, int64), err error)

Trace implements gorm logger interface method

func (GormLogger) Warn

func (g GormLogger) Warn(ctx context.Context, msg string, data ...interface{})

Warn implements gorm logger interface method

type LumberjackSink

type LumberjackSink struct {
	*lumberjack.Logger
	Scheme string
}

LumberjackSink for log rotate

func NewLumberjackSink

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

NewLumberjackSink build LumberjackSink

func (LumberjackSink) Sync

func (LumberjackSink) Sync() error

Sync lumberjack Logger implements Sync method for Sink interface

type Options

type Options struct {
	Name              string                 // logger name
	Level             string                 // logger level: debug, info, warn, error dpanic, panic, fatal
	Format            string                 // log format
	OutputPaths       []string               // log path
	InitialFields     map[string]interface{} // initial field names
	DisableCaller     bool                   // whether print caller
	DisableStacktrace bool                   // whether print stackstrace
	SentryClient      *sentry.Client         // sentry client
	EncoderConfig     *zapcore.EncoderConfig // logger key name config
	LumberjackSink    *LumberjackSink        // lumberjack sink for log rotate
}

Options new logger options

type SentryCoreConfig

type SentryCoreConfig struct {
	Tags              map[string]string
	DisableStacktrace bool
	Level             zapcore.Level
	FlushTimeout      time.Duration
	Hub               *sentry.Hub
}

SentryCoreConfig is a minimal set of parameters for Sentry Core.

Jump to

Keyboard shortcuts

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