Documentation
¶
Index ¶
- Constants
- Variables
- func AddGlobalFields(fields ...LogField)
- func AddWriter(w Writer)
- 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 ReadLastNLines(path string, n int) ([]string, error)
- 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 GormLogger
- func (l *GormLogger) Error(ctx context.Context, str string, args ...interface{})
- func (l *GormLogger) Info(ctx context.Context, str string, args ...interface{})
- func (l *GormLogger) LogMode(logger.LogLevel) logger.Interface
- func (l *GormLogger) Trace(ctx context.Context, begin time.Time, ...)
- func (l *GormLogger) Warn(ctx context.Context, str string, args ...interface{})
- 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 )
const TAG = "[GORM]"
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 is an error that indicates the log file is already closed ErrLogFileClosed = errors.New("error: log file closed") )
Functions ¶
func AddWriter ¶
func AddWriter(w Writer)
AddWriter adds a new writer If there is already a writer, the new writer will be added to the writer chain For example, to write logs to both file and console, if there is already a file writer, ```go logx.AddWriter(logx.NewWriter(os.Stdout)) ```
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 GormLogger ¶
type GormLogger struct {
}
func (*GormLogger) Error ¶
func (l *GormLogger) Error(ctx context.Context, str string, args ...interface{})
func (*GormLogger) Info ¶
func (l *GormLogger) Info(ctx context.Context, str string, args ...interface{})
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 `yaml:"ServiceName" default:"NPanel"`
// 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 `yaml:"Mode" default:"file"`
// Encoding represents the encoding type, default is `json`
// json: json encoding
// plain: plain text encoding, typically used in development
Encoding string `yaml:"Encoding" default:"json"`
// TimeFormat represents the time format, default is `2006-01-02T15:04:05.000Z07:00`
TimeFormat string `yaml:"TimeFormat" default:"2006-01-02 15:04:05.000"`
// Path represents the log file path, default is `logs`
Path string `yaml:"Path" default:"logs"`
// Level represents the log level, default is `info`
Level string `yaml:"Level" default:"info"`
// MaxContentLength represents the max content bytes, default is no limit
MaxContentLength uint32 `yaml:"MaxContentLength" default:"0"`
// Compress represents whether to compress the log file, default is `false`
Compress bool `yaml:"Compress" default:"false"`
// Stat represents whether to log statistics, default is `true`
Stat bool `yaml:"Stat" 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 `yaml:"KeepDays" default:"0"`
// StackCooldownMillis represents the cooldown time for stack logging, default is 100ms
StackCooldownMillis int `yaml:"StackCooldownMillis" 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 `yaml:"MaxBackups" 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 `yaml:"MaxSize" default:"0"`
// Rotation represents the type of log rotation rule. Default is `daily`
// daily: daily rotation
// size: size limited rotation
Rotation string `yaml:"Rotation" default:"daily"`
// FileTimeFormat represents the time format for file name, default is `2006-01-02T15:04:05.000Z07:00`
FileTimeFormat string `yaml:"FileTimeFormat" default:"2006-01-02T15:04:05.000Z07:00"`
}
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 debug level
Debug(...any)
// Debugf logs a message at debug level
Debugf(string, ...any)
// Debugv logs a message at debug level
Debugv(any)
// Debugw logs a message at debug 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)
}