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 ...interface{})
- func Debugf(format string, v ...interface{})
- func Debugv(v interface{})
- func Debugw(msg string, fields ...LogField)
- func Disable()
- func DisableStat()
- func Error(v ...interface{})
- func ErrorStack(v ...interface{})
- func ErrorStackf(format string, v ...interface{})
- func Errorf(format string, v ...interface{})
- func Errorv(v interface{})
- func Errorw(msg string, fields ...LogField)
- func Info(v ...interface{})
- func Infof(format string, v ...interface{})
- func Infov(v interface{})
- 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 ...interface{})
- func Severef(format string, v ...interface{})
- func Slow(v ...interface{})
- func Slowf(format string, v ...interface{})
- func Slowv(v interface{})
- func Sloww(msg string, fields ...LogField)
- func Stat(v ...interface{})
- func Statf(format string, v ...interface{})
- 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") )
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 Debugf ¶
func Debugf(format string, v ...interface{})
Debugf writes v with format into access log.
func ErrorStack ¶
func ErrorStack(v ...interface{})
ErrorStack writes v along with call stack into error log.
func ErrorStackf ¶
func ErrorStackf(format string, v ...interface{})
ErrorStackf writes v along with call stack in format into error log.
func Errorf ¶
func Errorf(format string, v ...interface{})
Errorf writes v with format into error log.
func Errorv ¶
func Errorv(v interface{})
Errorv writes v into error log with json content. No call stack attached, because not elegant to pack the messages.
func Infof ¶
func Infof(format string, v ...interface{})
Infof writes v with format into access log.
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, just 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 Severef ¶
func Severef(format string, v ...interface{})
Severef writes v with format into severe log.
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 control 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 ...interface{})
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 ...interface{})
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 string `json:",optional"` Mode string `json:",default=console,options=[console,file,volume]"` Encoding string `json:",default=json,options=[json,plain]"` TimeFormat string `json:",optional"` Path string `json:",default=logs"` Level string `json:",default=info,options=[debug,info,error,severe]"` Compress bool `json:",optional"` KeepDays int `json:",optional"` 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 thougth `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"` // RotationRuleType 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 LogField ¶
type LogField struct { Key string Value interface{} }
LogField is a key-value pair that will be added to the log entry.
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(...interface{}) // Debugf logs a message at info level. Debugf(string, ...interface{}) // Debugv logs a message at info level. Debugv(interface{}) // Debugw logs a message at info level. Debugw(string, ...LogField) // Error logs a message at error level. Error(...interface{}) // Errorf logs a message at error level. Errorf(string, ...interface{}) // Errorv logs a message at error level. Errorv(interface{}) // Errorw logs a message at error level. Errorw(string, ...LogField) // Info logs a message at info level. Info(...interface{}) // Infof logs a message at info level. Infof(string, ...interface{}) // Infov logs a message at info level. Infov(interface{}) // Infow logs a message at info level. Infow(string, ...LogField) // Slow logs a message at slow level. Slow(...interface{}) // Slowf logs a message at slow level. Slowf(string, ...interface{}) // Slowv logs a message at slow level. Slowv(interface{}) // 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 interface{}) Close() error Debug(v interface{}, fields ...LogField) Error(v interface{}, fields ...LogField) Info(v interface{}, fields ...LogField) Severe(v interface{}) Slow(v interface{}, fields ...LogField) Stack(v interface{}) Stat(v interface{}, fields ...LogField) }