xlog

package
v0.0.0-...-6ee6613 Latest Latest
Warning

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

Go to latest
Published: May 1, 2024 License: MIT Imports: 27 Imported by: 0

Documentation

Index

Constants

View Source
const (
	LogLevelDebug logLevel = "DEBUG"
	LogLevelInfo  logLevel = "INFO"
	LogLevelWarn  logLevel = "WARN"
	LogLevelError logLevel = "ERROR"
)
View Source
const (
	JSON logEncoderType = iota
	PlainText
)
View Source
const (
	StdOut logOutWriterType = iota
	File
)
View Source
const (
	ContextKeyMapToOmitempty = "_"
	ContextKeyMapToItself    = ""
)
View Source
const (
	B fileSizeUnit = 1 << (10 * iota)
	KB
	MB
)
View Source
const (
	Second fileAgeUnit = fileAgeUnit(time.Duration(1 * time.Second))
	Minute fileAgeUnit = fileAgeUnit(time.Duration(1 * time.Minute))
	Hour   fileAgeUnit = fileAgeUnit(time.Duration(1 * time.Hour))
	Day    fileAgeUnit = fileAgeUnit(time.Duration(1 * time.Hour * 24))
)

Variables

This section is empty.

Functions

func RotateLog

func RotateLog(ctx context.Context, cfg *FileCoreConfig) io.WriteCloser

func SingleLog

func SingleLog(ctx context.Context, cfg *FileCoreConfig) io.WriteCloser

func WrapCore

func WrapCore(core xLogCore, cfg zapcore.EncoderConfig) (xLogCore, error)

func WrapCoreNewLevelEnabler

func WrapCoreNewLevelEnabler(core xLogCore, lvlEnabler zapcore.LevelEnabler, cfg zapcore.EncoderConfig) (xLogCore, error)

func WrapCores

func WrapCores(cores []xLogCore, cfg zapcore.EncoderConfig) (xLogCore, error)

func WrapCoresNewLevelEnabler

func WrapCoresNewLevelEnabler(cores []xLogCore, lvlEnabler zapcore.LevelEnabler, cfg zapcore.EncoderConfig) (xLogCore, error)

func XLogBufferSyncer

func XLogBufferSyncer(
	ctx context.Context,
	writer io.WriteCloser,
	bufSize uint64,
	flushInterval int64,
) zapcore.WriteSyncer

func XLogLockSyncer

func XLogLockSyncer(ctx context.Context, writer io.WriteCloser) zapcore.WriteSyncer

func XLogTeeCore

func XLogTeeCore(cores ...xLogCore) xLogCore

Types

type AntsXLogger

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

func NewAntsXLogger

func NewAntsXLogger(logger XLogger) *AntsXLogger

func (*AntsXLogger) Printf

func (l *AntsXLogger) Printf(format string, args ...any)
type Banner interface {
	JSON() string
	PlainText() string
}

type FileCoreConfig

type FileCoreConfig struct {
	FilePath                string `json:"filePath" yaml:"filePath"`
	Filename                string `json:"filename" yaml:"filename"`
	FileMaxSize             string `json:"fileMaxSize" yaml:"fileMaxSize"`
	FileMaxAge              string `json:"fileMaxAge" yaml:"fileMaxAge"`
	FileZipName             string `json:"fileZipName" yaml:"fileZipName"`
	FileBufferSize          string `json:"fileBufferSize" yaml:"fileBufferSize"`
	FileBufferFlushInterval int64  `json:"fileBufferFlushInterval" yaml:"fileBufferFlushInterval"` // Milliseconds
	FileMaxBackups          int    `json:"fileMaxBackups" yaml:"fileMaxBackups"`
	FileCompressBatch       int    `json:"fileCompressBatch" yaml:"fileCompressBatch"`
	FileCompressible        bool   `json:"fileCompressible" yaml:"fileCompressible"`
	FileRotateEnable        bool   `json:"fileRotateEnable" yaml:"fileRotateEnable"`
}

type FxXLogger

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

func NewFxXLogger

func NewFxXLogger(logger XLogger) *FxXLogger

func (*FxXLogger) LogEvent

func (l *FxXLogger) LogEvent(event fxevent.Event)

type GoRedisXLogger

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

func NewGoRedisXLogger

func NewGoRedisXLogger(logger XLogger) *GoRedisXLogger

func (*GoRedisXLogger) Printf

func (l *GoRedisXLogger) Printf(ctx context.Context, format string, v ...any)

type GormXLogger

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

func NewGormXLogger

func NewGormXLogger(logger XLogger, opts ...GormXLoggerOption) *GormXLogger

func (*GormXLogger) Error

func (l *GormXLogger) Error(ctx context.Context, msg string, data ...any)

func (*GormXLogger) Info

func (l *GormXLogger) Info(ctx context.Context, msg string, data ...any)

func (*GormXLogger) LogMode

func (l *GormXLogger) LogMode(lvl glogger.LogLevel) glogger.Interface

func (*GormXLogger) Trace

func (l *GormXLogger) Trace(ctx context.Context, begin time.Time, fc func() (sql string, rowsAffected int64), err error)

func (*GormXLogger) Warn

func (l *GormXLogger) Warn(ctx context.Context, msg string, data ...any)

type GormXLoggerOption

type GormXLoggerOption func(*glogger.Config)

func WithGormXLoggerIgnoreRecord404Err

func WithGormXLoggerIgnoreRecord404Err() GormXLoggerOption

func WithGormXLoggerLogLevel

func WithGormXLoggerLogLevel(lvl glogger.LogLevel) GormXLoggerOption

func WithGormXLoggerParameterizedQueries

func WithGormXLoggerParameterizedQueries() GormXLoggerOption

func WithGormXLoggerSlowThreshold

func WithGormXLoggerSlowThreshold(threshold time.Duration) GormXLoggerOption

type XAnyLogger

type XAnyLogger interface {
	Log(lvl zapcore.Level, msg string, fields ...zap.Field)
}

type XBannerPrinter

type XBannerPrinter interface {
	Banner(banner Banner)
}

type XBasicContextLogger

type XBasicContextLogger interface {
	DebugContext(ctx context.Context, msg string, fields ...zap.Field)
	InfoContext(ctx context.Context, msg string, fields ...zap.Field)
	WarnContext(ctx context.Context, msg string, fields ...zap.Field)
	ErrorContext(ctx context.Context, err error, msg string, fields ...zap.Field)
	ErrorStackContext(ctx context.Context, err error, msg string, fields ...zap.Field)
}

type XBasicLogger

type XBasicLogger interface {
	Debug(msg string, fields ...zap.Field)
	Info(msg string, fields ...zap.Field)
	Warn(msg string, fields ...zap.Field)
	Error(err error, msg string, fields ...zap.Field)
	ErrorStack(err error, msg string, fields ...zap.Field)
}

type XFormatLogger

type XFormatLogger interface {
	Logf(lvl zapcore.Level, format string, args ...any)
	ErrorStackf(err error, format string, args ...any)
}

type XLogCoreConstructor

type XLogCoreConstructor func(
	context.Context,
	zapcore.LevelEnabler,
	logEncoderType,
	zapcore.LevelEncoder,
	zapcore.TimeEncoder,
) xLogCore

type XLogger

type XLogger interface {
	IncreaseLogLevel(level zapcore.Level)
	Level() string
	Sync() error
	Close()

	XBannerPrinter
	XAnyLogger
	XBasicContextLogger
	XBasicLogger
	XFormatLogger
	// contains filtered or unexported methods
}

XLogger mainly implemented by Uber zap logger.

zap(), timeEncoder(), levelEncoder(), writeSyncer(), levelEnablerFunc(), outEncoder() are used to create child logger which will redefine the zapcore.Core.

ErrorStack is used to print all errors throws stacks. Instead of using zap default error stack, it can print the error stack in JSON format. It is easy for us to use fluentd, fluentbit or other log aggregator to parse the error stack, then display them in elastic search or other tools.

The interface methods with context is used to add more additional fields to the log. We can pass like trace ID, service name, etc. To do the log trace.

Log format is not recommended, because it is low performance.

func NewXLogger

func NewXLogger(opts ...XLoggerOption) XLogger

type XLoggerOption

type XLoggerOption func(*loggerCfg) error

func WithXLoggerContext

func WithXLoggerContext(ctx context.Context) XLoggerOption

func WithXLoggerContextFieldExtract

func WithXLoggerContextFieldExtract(field string, mapTo ...string) XLoggerOption

func WithXLoggerEncoder

func WithXLoggerEncoder(logEnc logEncoderType) XLoggerOption

func WithXLoggerFileWriter

func WithXLoggerFileWriter(coreCfg *FileCoreConfig) XLoggerOption

func WithXLoggerLevel

func WithXLoggerLevel(lvl logLevel) XLoggerOption

func WithXLoggerLevelEncoder

func WithXLoggerLevelEncoder(lvlEnc zapcore.LevelEncoder) XLoggerOption

func WithXLoggerStdOutWriter

func WithXLoggerStdOutWriter() XLoggerOption

func WithXLoggerTimeEncoder

func WithXLoggerTimeEncoder(tsEnc zapcore.TimeEncoder) XLoggerOption

Jump to

Keyboard shortcuts

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