Documentation ¶
Index ¶
- Constants
- Variables
- func AddGlobalFields(fields ...LogField)
- func Alert(v string)
- func Close() error
- func CollectSysLog()
- func ContextWithFields(ctx context.Context, fields ...LogField) context.Context
- func Debug(v ...any)
- func Debugf(format string, v ...any)
- func Debugv(v any)
- func Debugw(msg string, fields ...LogField)
- func Disable()
- func DisableStat()
- func Error(v ...any)
- func ErrorStack(v ...any)
- func ErrorStackf(format string, v ...any)
- func Errorf(format string, v ...any)
- func Errorv(v any)
- func Errorw(msg string, fields ...LogField)
- func Info(v ...any)
- func Infof(format string, v ...any)
- func Infov(v any)
- func Infow(msg string, fields ...LogField)
- func Must(err error)
- func MustSetup(c LogConf)
- func SetLevel(level uint32)
- func SetUp(c LogConf) (err error)
- func SetWriter(w Writer)
- func Severe(v ...any)
- func Severef(format string, v ...any)
- func Slow(v ...any)
- func Slowf(format string, v ...any)
- func Slowv(v any)
- func Sloww(msg string, fields ...LogField)
- func Stat(v ...any)
- func Statf(format string, v ...any)
- func WithColor(text string, colour color.Color) string
- func WithColorPadding(text string, colour color.Color) string
- func WithFields(ctx context.Context, fields ...LogField) context.Context
- type DailyRotateRule
- type LessLogger
- type LogConf
- type LogField
- type LogOption
- type Logger
- type RotateLogger
- type RotateRule
- type SizeLimitRotateRule
- type Writer
Constants ¶
const ( // DebugLevel logs everything DebugLevel uint32 = iota // InfoLevel does not include debugs InfoLevel // ErrorLevel includes errors, slows, stacks ErrorLevel // SevereLevel only log severe messages SevereLevel )
Variables ¶
var ( // ErrLogPathNotSet is an error that indicates the log path is not set. ErrLogPathNotSet = errors.New("log path must be set") // ErrLogServiceNameNotSet is an error that indicates that the service name is not set. ErrLogServiceNameNotSet = errors.New("log service name must be set") // ExitOnFatal defines whether to exit on fatal errors, defined here to make it easier to test. ExitOnFatal = syncx.ForAtomicBool(true) )
var ErrLogFileClosed = errors.New("error: log file closed")
ErrLogFileClosed is an error that indicates the log file is already closed.
Functions ¶
func Alert ¶
func Alert(v string)
Alert alerts v in alert level, and the message is written to error log.
func ContextWithFields ¶
ContextWithFields returns a new context with the given fields.
func ErrorStack ¶
func ErrorStack(v ...any)
ErrorStack writes v along with call stack into error log.
func ErrorStackf ¶
ErrorStackf writes v along with call stack in format into error log.
func Errorv ¶
func Errorv(v any)
Errorv writes v into error log with json content. No call stack attached, because not elegant to pack the messages.
func MustSetup ¶
func MustSetup(c LogConf)
MustSetup sets up logging with given config c. It exits on error.
func SetLevel ¶
func SetLevel(level uint32)
SetLevel sets the logging level. It can be used to suppress some logs.
func SetUp ¶
SetUp sets up the logx. If already set up, return nil. We allow SetUp to be called multiple times, because, for example, we need to allow different service frameworks to initialize logx respectively.
func SetWriter ¶
func SetWriter(w Writer)
SetWriter sets the logging writer. It can be used to customize the logging.
func WithColorPadding ¶
WithColorPadding is a helper function to add color to a string with leading and trailing spaces, only in plain encoding.
Types ¶
type DailyRotateRule ¶
type DailyRotateRule struct {
// contains filtered or unexported fields
}
A DailyRotateRule is a rule to daily rotate the log files.
func (*DailyRotateRule) BackupFileName ¶
func (r *DailyRotateRule) BackupFileName() string
BackupFileName returns the backup filename on rotating.
func (*DailyRotateRule) MarkRotated ¶
func (r *DailyRotateRule) MarkRotated()
MarkRotated marks the rotated time of r to be the current time.
func (*DailyRotateRule) OutdatedFiles ¶
func (r *DailyRotateRule) OutdatedFiles() []string
OutdatedFiles returns the files that exceeded the keeping days.
func (*DailyRotateRule) ShallRotate ¶
func (r *DailyRotateRule) ShallRotate(_ int64) bool
ShallRotate checks if the file should be rotated.
type LessLogger ¶
type LessLogger struct {
// contains filtered or unexported fields
}
A LessLogger is a logger that controls to log once during the given duration.
func NewLessLogger ¶
func NewLessLogger(milliseconds int) *LessLogger
NewLessLogger returns a LessLogger.
func (*LessLogger) Error ¶
func (logger *LessLogger) Error(v ...any)
Error logs v into error log or discard it if more than once in the given duration.
func (*LessLogger) Errorf ¶
func (logger *LessLogger) Errorf(format string, v ...any)
Errorf logs v with format into error log or discard it if more than once in the given duration.
type LogConf ¶
type LogConf struct { // ServiceName represents the service name. ServiceName string `json:",optional"` // Mode represents the logging mode, default is `console`. // console: log to console. // file: log to file. // volume: used in k8s, prepend the hostname to the log file name. Mode string `json:",default=console,options=[console,file,volume]"` // Encoding represents the encoding type, default is `json`. // json: json encoding. // plain: plain text encoding, typically used in development. Encoding string `json:",default=json,options=[json,plain]"` // TimeFormat represents the time format, default is `2006-01-02T15:04:05.000Z07:00`. TimeFormat string `json:",optional"` // Path represents the log file path, default is `logs`. Path string `json:",default=logs"` // Level represents the log level, default is `info`. Level string `json:",default=info,options=[debug,info,error,severe]"` // MaxContentLength represents the max content bytes, default is no limit. MaxContentLength uint32 `json:",optional"` // Compress represents whether to compress the log file, default is `false`. Compress bool `json:",optional"` // Stat represents whether to log statistics, default is `true`. Stat bool `json:",default=true"` // KeepDays represents how many days the log files will be kept. Default to keep all files. // Only take effect when Mode is `file` or `volume`, both work when Rotation is `daily` or `size`. KeepDays int `json:",optional"` // StackCooldownMillis represents the cooldown time for stack logging, default is 100ms. StackCooldownMillis int `json:",default=100"` // MaxBackups represents how many backup log files will be kept. 0 means all files will be kept forever. // Only take effect when RotationRuleType is `size`. // Even though `MaxBackups` sets 0, log files will still be removed // if the `KeepDays` limitation is reached. MaxBackups int `json:",default=0"` // MaxSize represents how much space the writing log file takes up. 0 means no limit. The unit is `MB`. // Only take effect when RotationRuleType is `size` MaxSize int `json:",default=0"` // Rotation represents the type of log rotation rule. Default is `daily`. // daily: daily rotation. // size: size limited rotation. Rotation string `json:",default=daily,options=[daily,size]"` }
A LogConf is a logging config.
type LogOption ¶
type LogOption func(options *logOptions)
LogOption defines the method to customize the logging.
func WithCooldownMillis ¶
WithCooldownMillis customizes logging on writing call stack interval.
func WithGzip ¶
func WithGzip() LogOption
WithGzip customizes logging to automatically gzip the log files.
func WithKeepDays ¶
WithKeepDays customizes logging to keep logs with days.
func WithMaxBackups ¶
WithMaxBackups customizes how many log files backups will be kept.
func WithMaxSize ¶
WithMaxSize customizes how much space the writing log file can take up.
func WithRotation ¶
WithRotation customizes which log rotation rule to use.
type Logger ¶
type Logger interface { // Debug logs a message at info level. Debug(...any) // Debugf logs a message at info level. Debugf(string, ...any) // Debugv logs a message at info level. Debugv(any) // Debugw logs a message at info level. Debugw(string, ...LogField) // Error logs a message at error level. Error(...any) // Errorf logs a message at error level. Errorf(string, ...any) // Errorv logs a message at error level. Errorv(any) // Errorw logs a message at error level. Errorw(string, ...LogField) // Info logs a message at info level. Info(...any) // Infof logs a message at info level. Infof(string, ...any) // Infov logs a message at info level. Infov(any) // Infow logs a message at info level. Infow(string, ...LogField) // Slow logs a message at slow level. Slow(...any) // Slowf logs a message at slow level. Slowf(string, ...any) // Slowv logs a message at slow level. Slowv(any) // Sloww logs a message at slow level. Sloww(string, ...LogField) // WithCallerSkip returns a new logger with the given caller skip. WithCallerSkip(skip int) Logger // WithContext returns a new logger with the given context. WithContext(ctx context.Context) Logger // WithDuration returns a new logger with the given duration. WithDuration(d time.Duration) Logger // WithFields returns a new logger with the given fields. WithFields(fields ...LogField) Logger }
A Logger represents a logger.
func WithCallerSkip ¶
WithCallerSkip returns a Logger with given caller skip.
func WithContext ¶
WithContext sets ctx to log, for keeping tracing information.
func WithDuration ¶
WithDuration returns a Logger with given duration.
type RotateLogger ¶
type RotateLogger struct {
// contains filtered or unexported fields
}
A RotateLogger is a Logger that can rotate log files with given rules.
func NewLogger ¶
func NewLogger(filename string, rule RotateRule, compress bool) (*RotateLogger, error)
NewLogger returns a RotateLogger with given filename and rule, etc.
type RotateRule ¶
type RotateRule interface { BackupFileName() string MarkRotated() OutdatedFiles() []string ShallRotate(size int64) bool }
A RotateRule interface is used to define the log rotating rules.
func DefaultRotateRule ¶
func DefaultRotateRule(filename, delimiter string, days int, gzip bool) RotateRule
DefaultRotateRule is a default log rotating rule, currently DailyRotateRule.
func NewSizeLimitRotateRule ¶
func NewSizeLimitRotateRule(filename, delimiter string, days, maxSize, maxBackups int, gzip bool) RotateRule
NewSizeLimitRotateRule returns the rotation rule with size limit
type SizeLimitRotateRule ¶
type SizeLimitRotateRule struct { DailyRotateRule // contains filtered or unexported fields }
SizeLimitRotateRule a rotation rule that make the log file rotated base on size
func (*SizeLimitRotateRule) BackupFileName ¶
func (r *SizeLimitRotateRule) BackupFileName() string
func (*SizeLimitRotateRule) MarkRotated ¶
func (r *SizeLimitRotateRule) MarkRotated()
func (*SizeLimitRotateRule) OutdatedFiles ¶
func (r *SizeLimitRotateRule) OutdatedFiles() []string
func (*SizeLimitRotateRule) ShallRotate ¶
func (r *SizeLimitRotateRule) ShallRotate(size int64) bool
type Writer ¶
type Writer interface { Alert(v any) Close() error Debug(v any, fields ...LogField) Error(v any, fields ...LogField) Info(v any, fields ...LogField) Severe(v any) Slow(v any, fields ...LogField) Stack(v any) Stat(v any, fields ...LogField) }