slog

package module
v0.1.1 Latest Latest
Warning

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

Go to latest
Published: May 5, 2023 License: MIT Imports: 19 Imported by: 2

Documentation

Index

Constants

View Source
const (
	// CallerFlagFnlFcn report short func name with filename and with line.
	// eg: "logger_test.go:48,TestLogger_ReportCaller"
	CallerFlagFnlFcn uint8 = iota
	// CallerFlagFull full func name with filename and with line.
	// eg: "github.com/gookit/slog_test.TestLogger_ReportCaller(),logger_test.go:48"
	CallerFlagFull
	// CallerFlagFunc full package with func name.
	// eg: "github.com/gookit/slog_test.TestLogger_ReportCaller"
	CallerFlagFunc
	// CallerFlagFcLine full package with func name and with line.
	// eg: "github.com/gookit/slog_test.TestLogger_ReportCaller:48"
	CallerFlagFcLine
	// CallerFlagPkg report full package name.
	// eg: "github.com/gookit/slog_test"
	CallerFlagPkg
	// CallerFlagPkgFnl report full package name + filename + line.
	// eg: "github.com/gookit/slog_test,logger_test.go:48"
	CallerFlagPkgFnl
	// CallerFlagFpLine report full filepath with line.
	CallerFlagFpLine
	// CallerFlagFnLine report filename with line.
	// eg: "logger_test.go:48"
	CallerFlagFnLine
	// CallerFlagFcName only report func name.
	// eg: "TestLogger_ReportCaller"
	CallerFlagFcName
)

NOTICE: you must set `Logger.ReportCaller=true` for reporting caller. then config the Logger.CallerFlag by follow flags.

View Source
const (
	DefaultTemplate = "[{{datetime}}] [{{channel}}] [{{level}}] [{{caller}}] {{message}} {{data}} {{extra}}\n"
	NamedTemplate   = "{{datetime}} channel={{channel}} level={{level}} [file={{caller}}] message={{message}} data={{data}}\n"
)

there are built in text log template

Variables

View Source
var (
	// FieldKeyData define the key name for Record.Data
	FieldKeyData = "data"
	// FieldKeyTime key name
	FieldKeyTime = "time"
	// FieldKeyDate key name
	FieldKeyDate = "date"

	// FieldKeyDatetime key name
	FieldKeyDatetime = "datetime"
	// FieldKeyTimestamp key name
	FieldKeyTimestamp = "timestamp"

	// FieldKeyCaller the field key name for report caller.
	//
	// For caller style please see CallerFlagFull, CallerFlagFunc and more.
	//
	// NOTICE: you must set `Logger.ReportCaller=true` for reporting caller
	FieldKeyCaller = "caller"

	// FieldKeyLevel name
	FieldKeyLevel = "level"
	// FieldKeyError Define the key when adding errors using WithError.
	FieldKeyError = "error"
	// FieldKeyExtra key name
	FieldKeyExtra = "extra"

	// FieldKeyChannel name
	FieldKeyChannel = "channel"
	// FieldKeyMessage name
	FieldKeyMessage = "message"
)
View Source
var (
	// DefaultChannelName for log record
	DefaultChannelName = "application"
	// DefaultTimeFormat define
	DefaultTimeFormat = "2006/01/02T15:04:05.000"

	// DoNothingOnExit handle func. use for testing.
	DoNothingOnExit = func(code int) {}
	// DoNothingOnPanic handle func. use for testing.
	DoNothingOnPanic = func(v any) {}

	// DefaultPanicFn handle func
	DefaultPanicFn = func(v any) {
		panic(v)
	}
	// DefaultClockFn create func
	DefaultClockFn = ClockFn(func() time.Time {
		return time.Now()
	})
)
View Source
var (
	// PrintLevel for use logger.Print / Printf / Println
	PrintLevel = InfoLevel

	// AllLevels exposing all logging levels
	AllLevels = Levels{
		PanicLevel,
		FatalLevel,
		ErrorLevel,
		WarnLevel,
		NoticeLevel,
		InfoLevel,
		DebugLevel,
		TraceLevel,
	}

	// DangerLevels define the commonly danger log levels
	DangerLevels = Levels{PanicLevel, FatalLevel, ErrorLevel, WarnLevel}
	// NormalLevels define the commonly normal log levels
	NormalLevels = Levels{InfoLevel, NoticeLevel, DebugLevel, TraceLevel}

	// LevelNames all level mapping name
	LevelNames = map[Level]string{
		PanicLevel:  "PANIC",
		FatalLevel:  "FATAL",
		ErrorLevel:  "ERROR",
		NoticeLevel: "NOTICE",
		WarnLevel:   "WARNING",
		InfoLevel:   "INFO",
		DebugLevel:  "DEBUG",
		TraceLevel:  "TRACE",
	}
)
View Source
var (
	// DefaultFields default log export fields for json formatter.
	DefaultFields = []string{
		FieldKeyDatetime,
		FieldKeyChannel,
		FieldKeyLevel,
		FieldKeyCaller,
		FieldKeyMessage,
		FieldKeyData,
		FieldKeyExtra,
	}

	// NoTimeFields log export fields without time
	NoTimeFields = []string{
		FieldKeyChannel,
		FieldKeyLevel,
		FieldKeyMessage,
		FieldKeyData,
		FieldKeyExtra,
	}
)
View Source
var ColorTheme = map[Level]color.Color{
	PanicLevel:  color.FgRed,
	FatalLevel:  color.FgRed,
	ErrorLevel:  color.FgMagenta,
	WarnLevel:   color.FgYellow,
	NoticeLevel: color.OpBold,
	InfoLevel:   color.FgGreen,
	DebugLevel:  color.FgCyan,
}

ColorTheme for format log to console

Functions

func AddHandler

func AddHandler(h Handler)

AddHandler to the std logger

func AddHandlers

func AddHandlers(hs ...Handler)

AddHandlers to the std logger

func AddProcessor

func AddProcessor(p Processor)

AddProcessor to the logger

func AddProcessors

func AddProcessors(ps ...Processor)

AddProcessors to the logger

func Configure

func Configure(fn func(l *SugaredLogger))

Configure the std logger

func Debug

func Debug(args ...any)

Debug logs a message at level Debug

func Debugf

func Debugf(format string, args ...any)

Debugf logs a message at level Debug

func EncodeToString

func EncodeToString(v any) string

EncodeToString data to string

func Error

func Error(args ...any)

Error logs a message at level Error

func ErrorT

func ErrorT(err error)

ErrorT logs a error type at level Error

func Errorf

func Errorf(format string, args ...any)

Errorf logs a message at level Error

func Exit

func Exit(code int)

Exit runs all the logger exit handlers and then terminates the program using os.Exit(code)

func ExitHandlers

func ExitHandlers() []func()

ExitHandlers get all global exitHandlers

func Fatal

func Fatal(args ...any)

Fatal logs a message at level Fatal

func FatalErr

func FatalErr(err error)

FatalErr logs a message at level Fatal on err is not nil

func Fatalf

func Fatalf(format string, args ...any)

Fatalf logs a message at level Fatal

func Flush

func Flush() error

Flush log messages

func FlushDaemon

func FlushDaemon()

FlushDaemon run flush handle on daemon

Usage:

go slog.FlushDaemon()

func FlushTimeout

func FlushTimeout(timeout time.Duration)

FlushTimeout flush logs with timeout.

func Info

func Info(args ...any)

Info logs a message at level Info

func Infof

func Infof(format string, args ...any)

Infof logs a message at level Info

func LevelName

func LevelName(l Level) string

LevelName match

func MustFlush

func MustFlush()

MustFlush log messages

func Notice

func Notice(args ...any)

Notice logs a message at level Notice

func Noticef

func Noticef(format string, args ...any)

Noticef logs a message at level Notice

func Panic

func Panic(args ...any)

Panic logs a message at level Panic

func PanicErr

func PanicErr(err error)

PanicErr logs a message at level Panic on err is not nil

func Panicf

func Panicf(format string, args ...any)

Panicf logs a message at level Panic

func PrependExitHandler

func PrependExitHandler(handler func())

PrependExitHandler prepend register an exit-handler on global exitHandlers

func Print

func Print(args ...any)

Print logs a message at level PrintLevel

func Printf

func Printf(format string, args ...any)

Printf logs a message at level PrintLevel

func Println

func Println(args ...any)

Println logs a message at level PrintLevel

func PushHandler

func PushHandler(h Handler)

PushHandler to the std logger

func PushHandlers

func PushHandlers(hs ...Handler)

PushHandlers to the std logger

func RegisterExitHandler

func RegisterExitHandler(handler func())

RegisterExitHandler register an exit-handler on global exitHandlers

func Reset

func Reset()

Reset the std logger

func ResetExitHandlers

func ResetExitHandlers(applyToStd bool)

ResetExitHandlers reset all exitHandlers

func SetExitFunc

func SetExitFunc(fn func(code int))

SetExitFunc to the std logger

func SetFormatter

func SetFormatter(f Formatter)

SetFormatter to std logger

func SetLogLevel

func SetLogLevel(l Level)

SetLogLevel for the std logger

func Trace

func Trace(args ...any)

Trace logs a message at level Trace

func Tracef

func Tracef(format string, args ...any)

Tracef logs a message at level Trace

func Warn

func Warn(args ...any)

Warn logs a message at level Warn

func Warnf

func Warnf(format string, args ...any)

Warnf logs a message at level Warn

Types

type ClockFn

type ClockFn func() time.Time

ClockFn func

func (ClockFn) Now

func (fn ClockFn) Now() time.Time

Now implements the Clocker

type Formattable

type Formattable interface {
	// Formatter get the log formatter
	Formatter() Formatter
	// SetFormatter set the log formatter
	SetFormatter(Formatter)
}

Formattable interface

type FormattableHandler

type FormattableHandler interface {
	Handler
	Formattable
}

FormattableHandler interface

type FormattableTrait

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

FormattableTrait definition

func (*FormattableTrait) Format

func (f *FormattableTrait) Format(record *Record) ([]byte, error)

Format log record to bytes

func (*FormattableTrait) Formatter

func (f *FormattableTrait) Formatter() Formatter

Formatter get formatter. if not set, will return TextFormatter

func (*FormattableTrait) SetFormatter

func (f *FormattableTrait) SetFormatter(formatter Formatter)

SetFormatter to handler

type Formatter

type Formatter interface {
	// Format you can format record and write result to record.Buffer
	Format(record *Record) ([]byte, error)
}

Formatter interface

func GetFormatter

func GetFormatter() Formatter

GetFormatter of the std logger

type FormatterFunc

type FormatterFunc func(r *Record) ([]byte, error)

FormatterFunc wrapper definition

func (FormatterFunc) Format

func (fn FormatterFunc) Format(r *Record) ([]byte, error)

Format a log record

type Handler

type Handler interface {
	// Closer Close handler.
	// You should first call Flush() on close logic.
	// Refer the FileHandler.Close() handle
	io.Closer
	// Flush and sync logs to disk file.
	Flush() error
	// IsHandling Checks whether the given record will be handled by this handler.
	IsHandling(level Level) bool
	// Handle a log record.
	//
	// All records may be passed to this method, and the handler should discard
	// those that it does not want to handle.
	Handle(*Record) error
}

Handler interface definition

type JSONFormatter

type JSONFormatter struct {
	// Fields exported log fields. default is DefaultFields
	Fields []string
	// Aliases for output fields. you can change export field name.
	//
	// item: `"field" : "output name"`
	// eg: {"message": "msg"} export field will display "msg"
	Aliases StringMap

	// PrettyPrint will indent all json logs
	PrettyPrint bool
	// TimeFormat the time format layout. default is DefaultTimeFormat
	TimeFormat string
}

JSONFormatter definition

func AsJSONFormatter

func AsJSONFormatter(f Formatter) *JSONFormatter

AsJSONFormatter util func

func NewJSONFormatter

func NewJSONFormatter(fn ...func(f *JSONFormatter)) *JSONFormatter

NewJSONFormatter create new JSONFormatter

func (*JSONFormatter) AddField

func (f *JSONFormatter) AddField(name string) *JSONFormatter

AddField for export

func (*JSONFormatter) Configure

func (f *JSONFormatter) Configure(fn func(*JSONFormatter)) *JSONFormatter

Configure current formatter

func (*JSONFormatter) Format

func (f *JSONFormatter) Format(r *Record) ([]byte, error)

Format an log record

type Level

type Level uint32

Level type

const (
	// PanicLevel level, the highest level of severity. will call panic() if the logging level <= PanicLevel.
	PanicLevel Level = 100
	// FatalLevel level. Logs and then calls `logger.Exit(1)`. It will exit even if the
	// logging level <= FatalLevel.
	FatalLevel Level = 200
	// ErrorLevel level. Runtime errors. Used for errors that should definitely be noted.
	// Commonly used for hooks to send errors to an error tracking service.
	ErrorLevel Level = 300
	// WarnLevel level. Non-critical entries that deserve eyes.
	WarnLevel Level = 400
	// NoticeLevel level Uncommon events
	NoticeLevel Level = 500
	// InfoLevel level. Examples: User logs in, SQL logs.
	InfoLevel Level = 600
	// DebugLevel level. Usually only enabled when debugging. Very verbose logging.
	DebugLevel Level = 700
	// TraceLevel level. Designates finer-grained informational events than the Debug.
	TraceLevel Level = 800
)

These are the different logging levels. You can set the logging level to log handler

func LevelByName

func LevelByName(ln string) Level

LevelByName convert name to level

func Name2Level

func Name2Level(ln string) (Level, error)

Name2Level convert name to level

func (Level) LowerName

func (l Level) LowerName() string

LowerName get lower level name

func (Level) Name

func (l Level) Name() string

Name get level name

func (Level) ShouldHandling

func (l Level) ShouldHandling(curLevel Level) bool

ShouldHandling compare level, if current level <= l, it will be record.

func (Level) String

func (l Level) String() string

String get level name

type LevelFormattable

type LevelFormattable interface {
	Formattable
	IsHandling(level Level) bool
}

LevelFormattable support limit log levels and provide formatter

type LevelWithFormatter

type LevelWithFormatter struct {
	FormattableTrait
	// Level for log message. if current level >= Level will log message
	Level Level
}

LevelWithFormatter struct definition

- support set log formatter - only support set one log level

func NewLvFormatter

func NewLvFormatter(lv Level) *LevelWithFormatter

NewLvFormatter create new instance

func (*LevelWithFormatter) IsHandling

func (h *LevelWithFormatter) IsHandling(level Level) bool

IsHandling Check if the current level can be handling

type Levels

type Levels []Level

Levels level list

func (Levels) Contains

func (ls Levels) Contains(level Level) bool

Contains given level

type LevelsWithFormatter

type LevelsWithFormatter struct {
	FormattableTrait
	// Levels for log message
	Levels []Level
}

LevelsWithFormatter struct definition

- support set log formatter - support setting multi log levels

func NewLvsFormatter

func NewLvsFormatter(levels []Level) *LevelsWithFormatter

NewLvsFormatter create new instance

func (*LevelsWithFormatter) IsHandling

func (h *LevelsWithFormatter) IsHandling(level Level) bool

IsHandling Check if the current level can be handling

type Logger

type Logger struct {

	// LowerLevelName use lower level name
	LowerLevelName bool
	// ReportCaller on write log record
	ReportCaller bool
	CallerSkip   int
	CallerFlag   uint8
	// TimeClock custom time clock, timezone
	TimeClock ClockFn

	// custom exit, panic handle.
	ExitFunc  func(code int)
	PanicFunc func(v any)
	// contains filtered or unexported fields
}

Logger log dispatcher definition.

The logger implements the `github.com/gookit/gsr.Logger`

func New

func New(fns ...LoggerFn) *Logger

New create a new logger

func NewWithConfig

func NewWithConfig(fns ...LoggerFn) *Logger

NewWithConfig create a new logger with config func

func NewWithHandlers

func NewWithHandlers(hs ...Handler) *Logger

NewWithHandlers create a new logger with handlers

func NewWithName

func NewWithName(name string, fns ...LoggerFn) *Logger

NewWithName create a new logger with name

func (*Logger) AddHandler

func (l *Logger) AddHandler(h Handler)

AddHandler to the logger

func (*Logger) AddHandlers

func (l *Logger) AddHandlers(hs ...Handler)

AddHandlers to the logger

func (*Logger) AddProcessor

func (l *Logger) AddProcessor(p Processor)

AddProcessor to the logger

func (*Logger) AddProcessors

func (l *Logger) AddProcessors(ps ...Processor)

AddProcessors to the logger

func (*Logger) Close

func (l *Logger) Close() error

Close the logger

func (*Logger) Config

func (l *Logger) Config(fns ...LoggerFn) *Logger

Config current logger

func (*Logger) Configure deprecated

func (l *Logger) Configure(fn LoggerFn) *Logger

Configure current logger.

Deprecated: use Config()

func (*Logger) Debug

func (l *Logger) Debug(args ...any)

Debug logs a message at level debug

func (*Logger) Debugf

func (l *Logger) Debugf(format string, args ...any)

Debugf logs a message at level debug

func (*Logger) DoNothingOnPanicFatal

func (l *Logger) DoNothingOnPanicFatal()

DoNothingOnPanicFatal do nothing on panic or fatal level. useful on testing.

func (*Logger) Error

func (l *Logger) Error(args ...any)

Error logs a message at level error

func (*Logger) ErrorT

func (l *Logger) ErrorT(err error)

ErrorT logs a error type at level error

func (*Logger) Errorf

func (l *Logger) Errorf(format string, args ...any)

Errorf logs a message at level error

func (*Logger) Exit

func (l *Logger) Exit(code int)

Exit logger handle

func (*Logger) ExitHandlers

func (l *Logger) ExitHandlers() []func()

ExitHandlers get all exitHandlers of the logger

func (*Logger) Fatal

func (l *Logger) Fatal(args ...any)

Fatal logs a message at level fatal

func (*Logger) Fatalf

func (l *Logger) Fatalf(format string, args ...any)

Fatalf logs a message at level fatal

func (*Logger) Fatalln

func (l *Logger) Fatalln(args ...any)

Fatalln logs a message at level fatal

func (*Logger) Flush

func (l *Logger) Flush() error

Flush flushes all the logs and attempts to "sync" their data to disk. l.mu is held.

func (*Logger) FlushAll

func (l *Logger) FlushAll() error

FlushAll flushes all the logs and attempts to "sync" their data to disk.

alias of the Flush()

func (*Logger) FlushDaemon

func (l *Logger) FlushDaemon()

FlushDaemon run flush handle on daemon

Usage:

go slog.FlushDaemon()

func (*Logger) FlushTimeout

func (l *Logger) FlushTimeout(timeout time.Duration)

FlushTimeout flush logs on limit time.

refer from glog package

func (*Logger) Info

func (l *Logger) Info(args ...any)

Info logs a message at level Info

func (*Logger) Infof

func (l *Logger) Infof(format string, args ...any)

Infof logs a message at level Info

func (*Logger) LastErr

func (l *Logger) LastErr() error

LastErr fetch, will clear after read.

func (*Logger) Log

func (l *Logger) Log(level Level, args ...any)

Log a message with level

func (*Logger) Logf

func (l *Logger) Logf(level Level, format string, args ...any)

Logf a format message with level

func (*Logger) MustFlush

func (l *Logger) MustFlush()

MustFlush flush logs. will panic on error

func (*Logger) Name

func (l *Logger) Name() string

Name of the logger

func (*Logger) Notice

func (l *Logger) Notice(args ...any)

Notice logs a message at level notice

func (*Logger) Noticef

func (l *Logger) Noticef(format string, args ...any)

Noticef logs a message at level notice

func (*Logger) Panic

func (l *Logger) Panic(args ...any)

Panic logs a message at level panic

func (*Logger) Panicf

func (l *Logger) Panicf(format string, args ...any)

Panicf logs a message at level panic

func (*Logger) Panicln

func (l *Logger) Panicln(args ...any)

Panicln logs a message at level panic

func (*Logger) PrependExitHandler

func (l *Logger) PrependExitHandler(handler func())

PrependExitHandler prepend register an exit-handler on global exitHandlers

func (*Logger) Print

func (l *Logger) Print(args ...any)

Print logs a message at level PrintLevel

func (*Logger) Printf

func (l *Logger) Printf(format string, args ...any)

Printf logs a message at level PrintLevel

func (*Logger) Println

func (l *Logger) Println(args ...any)

Println logs a message at level PrintLevel

func (*Logger) PushHandler

func (l *Logger) PushHandler(h Handler)

PushHandler to the l. alias of AddHandler()

func (*Logger) PushHandlers

func (l *Logger) PushHandlers(hs ...Handler)

PushHandlers to the logger

func (*Logger) PushProcessor

func (l *Logger) PushProcessor(p Processor)

PushProcessor to the logger alias of AddProcessor()

func (*Logger) Record

func (l *Logger) Record() *Record

Record return a new record for log

func (*Logger) RegisterExitHandler

func (l *Logger) RegisterExitHandler(handler func())

RegisterExitHandler register an exit-handler on global exitHandlers

func (*Logger) Reset

func (l *Logger) Reset()

Reset the logger

func (*Logger) ResetExitHandlers

func (l *Logger) ResetExitHandlers()

ResetExitHandlers reset logger exitHandlers

func (*Logger) ResetHandlers

func (l *Logger) ResetHandlers()

ResetHandlers for the logger

func (*Logger) ResetProcessors

func (l *Logger) ResetProcessors()

ResetProcessors for the logger

func (*Logger) SetHandlers

func (l *Logger) SetHandlers(hs []Handler)

SetHandlers for the logger

func (*Logger) SetName

func (l *Logger) SetName(name string)

SetName for logger

func (*Logger) SetProcessors

func (l *Logger) SetProcessors(ps []Processor)

SetProcessors for the logger

func (*Logger) Sync

func (l *Logger) Sync() error

Sync flushes buffered logs (if any).

alias of the Flush()

func (*Logger) Trace

func (l *Logger) Trace(args ...any)

Trace logs a message at level trace

func (*Logger) Tracef

func (l *Logger) Tracef(format string, args ...any)

Tracef logs a message at level trace

func (*Logger) VisitAll

func (l *Logger) VisitAll(fn func(handler Handler) error) error

VisitAll logger handlers

func (*Logger) Warn

func (l *Logger) Warn(args ...any)

Warn logs a message at level Warn

func (*Logger) Warnf

func (l *Logger) Warnf(format string, args ...any)

Warnf logs a message at level Warn

func (*Logger) Warning

func (l *Logger) Warning(args ...any)

Warning logs a message at level Warn, alias of Logger.Warn()

func (*Logger) WithContext

func (l *Logger) WithContext(ctx context.Context) *Record

WithContext new record with context.Context

func (*Logger) WithCtx

func (l *Logger) WithCtx(ctx context.Context) *Record

WithCtx new record with context.Context

func (*Logger) WithData

func (l *Logger) WithData(data M) *Record

WithData new record with data

func (*Logger) WithField

func (l *Logger) WithField(name string, value any) *Record

WithField new record with field

func (*Logger) WithFields

func (l *Logger) WithFields(fields M) *Record

WithFields new record with fields

func (*Logger) WithTime

func (l *Logger) WithTime(t time.Time) *Record

WithTime new record with time.Time

type LoggerFn

type LoggerFn func(l *Logger)

LoggerFn func

type M

type M map[string]any

M short name of map[string]any

func (M) String

func (m M) String() string

String map to string

type Processable

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

Processable definition

func (*Processable) AddProcessor

func (p *Processable) AddProcessor(processor Processor)

AddProcessor to the handler

func (*Processable) ProcessRecord

func (p *Processable) ProcessRecord(r *Record)

ProcessRecord process record

type ProcessableHandler

type ProcessableHandler interface {
	// AddProcessor add a processor
	AddProcessor(Processor)
	// ProcessRecord handle a record
	ProcessRecord(record *Record)
}

ProcessableHandler interface

type Processor

type Processor interface {
	// Process record
	Process(record *Record)
}

Processor interface definition

func AddHostname

func AddHostname() Processor

AddHostname to record

func AddUniqueID

func AddUniqueID(fieldName string) Processor

AddUniqueID to record

func AppendCtxKeys

func AppendCtxKeys(keys ...string) Processor

AppendCtxKeys append context keys to record.Fields

type ProcessorFunc

type ProcessorFunc func(record *Record)

ProcessorFunc wrapper definition

var MemoryUsage ProcessorFunc = func(record *Record) {
	stat := new(runtime.MemStats)
	runtime.ReadMemStats(stat)
	record.SetExtraValue("memoryUsage", stat.Alloc)
}

MemoryUsage get memory usage.

func (ProcessorFunc) Process

func (fn ProcessorFunc) Process(record *Record)

Process record

type Record

type Record struct {

	// Time for record log
	Time time.Time
	// Level log level for record
	Level Level

	// Channel log channel name. eg: "order", "goods", "user"
	Channel string
	Message string

	// Ctx context.Context
	Ctx context.Context

	// Fields custom fields data.
	// Contains all the fields set by the user.
	Fields M
	// Data log context data
	Data M
	// Extra log extra data
	Extra M

	// Caller information
	Caller *runtime.Frame
	// CallerFlag value. default is equals to Logger.CallerFlag
	CallerFlag uint8
	// CallerSkip value. default is equals to Logger.CallerSkip
	CallerSkip int
	// contains filtered or unexported fields
}

Record a log record definition

func WithData

func WithData(data M) *Record

WithData new record with data

func WithFields

func WithFields(fields M) *Record

WithFields new record with fields

func (*Record) AddData

func (r *Record) AddData(data M) *Record

AddData on record

func (*Record) AddExtra

func (r *Record) AddExtra(data M) *Record

AddExtra information on record

func (*Record) AddField

func (r *Record) AddField(name string, val any) *Record

AddField add new field to the record

func (*Record) AddFields

func (r *Record) AddFields(fields M) *Record

AddFields add new fields to the record

func (*Record) AddValue

func (r *Record) AddValue(key string, value any) *Record

AddValue add Data value to record

func (*Record) Copy

func (r *Record) Copy() *Record

Copy new record from old record

func (*Record) Debug

func (r *Record) Debug(args ...any)

Debug logs a message at level Debug

func (*Record) Debugf

func (r *Record) Debugf(format string, args ...any)

Debugf logs a message at level Debug

func (*Record) Error

func (r *Record) Error(args ...any)

Error logs a message at level Error

func (*Record) Errorf

func (r *Record) Errorf(format string, args ...any)

Errorf logs a message at level Error

func (*Record) Fatal

func (r *Record) Fatal(args ...any)

Fatal logs a message at level Fatal

func (*Record) Fatalf

func (r *Record) Fatalf(format string, args ...any)

Fatalf logs a message at level Fatal

func (*Record) Fatalln

func (r *Record) Fatalln(args ...any)

Fatalln logs a message at level Fatal

func (*Record) GoString

func (r *Record) GoString() string

GoString of the record

func (*Record) Info

func (r *Record) Info(args ...any)

Info logs a message at level Info

func (*Record) Infof

func (r *Record) Infof(format string, args ...any)

Infof logs a message at level Info

func (*Record) Init

func (r *Record) Init(lowerLevelName bool)

Init something for record.

func (*Record) LevelName

func (r *Record) LevelName() string

LevelName get

func (*Record) Log

func (r *Record) Log(level Level, args ...any)

Log a message with level

func (*Record) Logf

func (r *Record) Logf(level Level, format string, args ...any)

Logf a message with level

func (*Record) Notice

func (r *Record) Notice(args ...any)

Notice logs a message at level Notice

func (*Record) Noticef

func (r *Record) Noticef(format string, args ...any)

Noticef logs a message at level Notice

func (*Record) Panic

func (r *Record) Panic(args ...any)

Panic logs a message at level Panic

func (*Record) Panicf

func (r *Record) Panicf(format string, args ...any)

Panicf logs a message at level Panic

func (*Record) Panicln

func (r *Record) Panicln(args ...any)

Panicln logs a message at level Panic

func (*Record) Print

func (r *Record) Print(args ...any)

Print logs a message at level Print

func (*Record) Printf

func (r *Record) Printf(format string, args ...any)

Printf logs a message at level Print

func (*Record) Println

func (r *Record) Println(args ...any)

Println logs a message at level Print, will not append \n. alias of Print

func (*Record) SetContext

func (r *Record) SetContext(ctx context.Context) *Record

SetContext on record

func (*Record) SetCtx

func (r *Record) SetCtx(ctx context.Context) *Record

SetCtx on record

func (*Record) SetData

func (r *Record) SetData(data M) *Record

SetData on record

func (*Record) SetExtra

func (r *Record) SetExtra(data M) *Record

SetExtra information on record

func (*Record) SetExtraValue

func (r *Record) SetExtraValue(k string, v any)

SetExtraValue on record

func (*Record) SetFields

func (r *Record) SetFields(fields M) *Record

SetFields to the record

func (*Record) SetTime

func (r *Record) SetTime(t time.Time) *Record

SetTime on record

func (*Record) Trace

func (r *Record) Trace(args ...any)

Trace logs a message at level Trace

func (*Record) Tracef

func (r *Record) Tracef(format string, args ...any)

Tracef logs a message at level Trace

func (*Record) Warn

func (r *Record) Warn(args ...any)

Warn logs a message at level Warn

func (*Record) Warnf

func (r *Record) Warnf(format string, args ...any)

Warnf logs a message at level Warn

func (*Record) WithContext

func (r *Record) WithContext(ctx context.Context) *Record

WithContext on record

func (*Record) WithCtx

func (r *Record) WithCtx(ctx context.Context) *Record

WithCtx on record

func (*Record) WithData

func (r *Record) WithData(data M) *Record

WithData on record

func (*Record) WithError

func (r *Record) WithError(err error) *Record

WithError on record

func (*Record) WithField

func (r *Record) WithField(name string, val any) *Record

WithField with a new field to record

func (*Record) WithFields

func (r *Record) WithFields(fields M) *Record

WithFields with new fields to record

func (*Record) WithTime

func (r *Record) WithTime(t time.Time) *Record

WithTime set the record time

type SLogger

type SLogger interface {
	gsr.Logger
	Log(level Level, v ...any)
	Logf(level Level, format string, v ...any)
}

SLogger interface

type StringMap

type StringMap = map[string]string

StringMap string map short name

type SugaredLogger

type SugaredLogger struct {
	*Logger
	// Formatter log message formatter. default use TextFormatter
	Formatter Formatter
	// Output writer
	Output io.Writer
	// Level for log handling. if log record level <= Level, it will be record.
	Level Level
}

SugaredLogger definition. Is a fast and usable Logger, which already contains the default formatting and handling capabilities

func NewJSONSugared

func NewJSONSugared(out io.Writer, level Level, fns ...SugaredLoggerFn) *SugaredLogger

NewJSONSugared create new SugaredLogger with JSONFormatter

func NewStdLogger

func NewStdLogger(fns ...SugaredLoggerFn) *SugaredLogger

NewStdLogger instance

func NewSugaredLogger

func NewSugaredLogger(output io.Writer, level Level, fns ...SugaredLoggerFn) *SugaredLogger

NewSugaredLogger create new SugaredLogger

func Std

func Std() *SugaredLogger

Std get std logger

func (*SugaredLogger) Close

func (sl *SugaredLogger) Close() error

Close all log handlers

func (*SugaredLogger) Config

func (sl *SugaredLogger) Config(fns ...SugaredLoggerFn) *SugaredLogger

Config current logger

func (*SugaredLogger) Configure deprecated

func (sl *SugaredLogger) Configure(fn SugaredLoggerFn) *SugaredLogger

Configure current logger

Deprecated: please use SugaredLogger.Config()

func (*SugaredLogger) Flush

func (sl *SugaredLogger) Flush() error

Flush all logs. alias of the FlushAll()

func (*SugaredLogger) FlushAll

func (sl *SugaredLogger) FlushAll() error

FlushAll all logs

func (*SugaredLogger) Handle

func (sl *SugaredLogger) Handle(record *Record) error

Handle log record

func (*SugaredLogger) IsHandling

func (sl *SugaredLogger) IsHandling(level Level) bool

IsHandling Check if the current level can be handling

func (*SugaredLogger) Reset

func (sl *SugaredLogger) Reset()

Reset the logger

type SugaredLoggerFn

type SugaredLoggerFn func(sl *SugaredLogger)

SugaredLoggerFn func type.

type TextFormatter

type TextFormatter struct {

	// TimeFormat the time format layout. default is time.RFC3339
	TimeFormat string
	// Enable color on print log to terminal
	EnableColor bool
	// ColorTheme setting on render color on terminal
	ColorTheme map[Level]color.Color
	// FullDisplay Whether to display when record.Data, record.Extra, etc. are empty
	FullDisplay bool
	// EncodeFunc data encode for Record.Data, Record.Extra, etc.
	// Default is encode by EncodeToString()
	EncodeFunc func(v any) string
	// contains filtered or unexported fields
}

TextFormatter definition

func AsTextFormatter

func AsTextFormatter(f Formatter) *TextFormatter

AsTextFormatter util func

func NewTextFormatter

func NewTextFormatter(template ...string) *TextFormatter

NewTextFormatter create new TextFormatter

func (*TextFormatter) Fields

func (f *TextFormatter) Fields() []string

Fields get export field list

func (*TextFormatter) Format

func (f *TextFormatter) Format(r *Record) ([]byte, error)

Format a log record

func (*TextFormatter) SetTemplate

func (f *TextFormatter) SetTemplate(fmtTpl string)

SetTemplate set the log format template and update field-map

func (*TextFormatter) Template

func (f *TextFormatter) Template() string

Template get

Directories

Path Synopsis
Package handler provide useful common log handlers.
Package handler provide useful common log handlers.

Jump to

Keyboard shortcuts

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