Documentation ¶
Index ¶
- Constants
- Variables
- func AttachCore(l *zap.Logger, c zapcore.Core) *zap.Logger
- func CallerEncoder(caller zapcore.EntryCaller, enc zapcore.PrimitiveArrayEncoder)
- func CloneLogger(name string, fields ...zap.Field) *zap.Logger
- func CtxLogger(c context.Context, fields ...zap.Field) *zap.Logger
- func CtxTraceID(c context.Context) string
- func DPanic(msg string, fields ...zap.Field)
- func DPanicf(template string, args ...interface{})
- func Debug(msg string, fields ...zap.Field)
- func Debugf(template string, args ...interface{})
- func Error(msg string, fields ...zap.Field)
- func Errorf(template string, args ...interface{})
- func Fatal(msg string, fields ...zap.Field)
- func Fatalf(template string, args ...interface{})
- func FuncName(pc uintptr) string
- func GetGinRequestBody(c *gin.Context) []byte
- func GetGinTraceIDFromHeader(c *gin.Context) string
- func GetGinTraceIDFromQueryString(c *gin.Context) string
- func GinLogger() gin.HandlerFunc
- func GinLoggerWithConfig(conf GinLoggerConfig) gin.HandlerFunc
- func Info(msg string, fields ...zap.Field)
- func Infof(template string, args ...interface{})
- func InitLogger(name string, logDir string, debug bool) (*zap.Logger, error)
- func NewCtxLogger(c context.Context, logger *zap.Logger, traceID string) (context.Context, *zap.Logger)
- func NewLogger(options Options) (*zap.Logger, error)
- func NewSentryClient(dsn string, debug bool) (*sentry.Client, error)
- func NewSentryCore(cfg SentryCoreConfig, sentryClient *sentry.Client) zapcore.Core
- func Panic(msg string, fields ...zap.Field)
- func Panicf(template string, args ...interface{})
- func RegisterLumberjackSink(sink *LumberjackSink) error
- func ReplaceLogger(newLogger *zap.Logger) func()
- func SentryAttach(l *zap.Logger, sentryClient *sentry.Client) *zap.Logger
- func SentryCaptureException(err error) error
- func SentryCaptureMessage(msg string) error
- func SentryClient() *sentry.Client
- func ServerIP() string
- func SetLevel(lvl string)
- func TextLevel() string
- func TimeEncoder(t time.Time, enc zapcore.PrimitiveArrayEncoder)
- func Warn(msg string, fields ...zap.Field)
- func Warnf(template string, args ...interface{})
- type GinLogDetails
- type GinLoggerConfig
- type GormLogger
- func (g GormLogger) CtxLogger(ctx context.Context) *zap.Logger
- func (g GormLogger) Error(ctx context.Context, msg string, data ...interface{})
- func (g GormLogger) Info(ctx context.Context, msg string, data ...interface{})
- func (g GormLogger) LogMode(gormLogLevel gormlogger.LogLevel) gormlogger.Interface
- func (g GormLogger) Trace(ctx context.Context, begin time.Time, fc func() (string, int64), err error)
- func (g GormLogger) Warn(ctx context.Context, msg string, data ...interface{})
- type LumberjackSink
- type Options
- type SentryCoreConfig
Constants ¶
const ( // CtxLoggerName define the ctx logger name CtxLoggerName = "ctx" // TraceIDKeyName define the trace id keyname TraceIDKeyName = "trace_id" // TraceIDHeaderName ... TraceIDHeaderName = "X-Trace-Id" )
CtxLoggerName ...
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 ...
const (
// LogFilename default logger file name
LogFilename = "/tmp/logger.log"
)
LogFilename ...
Variables ¶
var ( // GormLoggerName is name of gorm logger GormLoggerName = "gorm" // GormLoggerCallerSkip caller skip GormLoggerCallerSkip = 3 )
GormLoggerName ...
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 ¶
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 ¶
CloneLogger return the global logger copy which add a new name
func CtxTraceID ¶
CtxTraceID get trace id from context Modify TraceIDPrefix change change the prefix
func GetGinRequestBody ¶
GetGinRequestBody get request body
func GetGinTraceIDFromHeader ¶
GetGinTraceIDFromHeader get key in request header of gin use for TraceIDKeyName as traceid
func GetGinTraceIDFromQueryString ¶
GetGinTraceIDFromQueryString get key in query string of gin use for TraceIDKeyName as traceid
func GinLoggerWithConfig ¶
func GinLoggerWithConfig(conf GinLoggerConfig) gin.HandlerFunc
GinLoggerWithConfig logger middleware for gin
func InitLogger ¶
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 NewSentryClient ¶
NewSentryClient return sentry client by sentrydsn
func NewSentryCore ¶
func NewSentryCore(cfg SentryCoreConfig, sentryClient *sentry.Client) zapcore.Core
NewSentryCore new a sentry core
func RegisterLumberjackSink ¶
func RegisterLumberjackSink(sink *LumberjackSink) error
RegisterLumberjackSink register lumberjack sink
func ReplaceLogger ¶
ReplaceLogger replace global logger as newLogger
func SentryAttach ¶
SentryAttach attach sentrycore
func SentryCaptureException ¶
SentryCaptureException ...
func TimeEncoder ¶
func TimeEncoder(t time.Time, enc zapcore.PrimitiveArrayEncoder)
TimeEncoder define time format
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
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