initial commit
This commit is contained in:
71
logger/logger.go
Normal file
71
logger/logger.go
Normal file
@ -0,0 +1,71 @@
|
||||
package logger
|
||||
|
||||
import (
|
||||
"io"
|
||||
)
|
||||
|
||||
// LogFormat is format type
|
||||
type LogFormat string
|
||||
|
||||
const (
|
||||
TextFormat LogFormat = "text"
|
||||
JSONFormat LogFormat = "json"
|
||||
)
|
||||
|
||||
// LogLevel is Logger Level type
|
||||
type LogLevel string
|
||||
|
||||
const (
|
||||
// DebugLevel has verbose message
|
||||
DebugLevel LogLevel = "debug"
|
||||
// InfoLevel is default log level
|
||||
InfoLevel LogLevel = "info"
|
||||
// WarnLevel is for logging messages about possible issues
|
||||
WarnLevel LogLevel = "warn"
|
||||
// ErrorLevel is for logging errors
|
||||
ErrorLevel LogLevel = "error"
|
||||
// FatalLevel is for logging fatal messages. The system shuts down after logging the message.
|
||||
FatalLevel LogLevel = "fatal"
|
||||
)
|
||||
|
||||
type Logger interface {
|
||||
WithFields(map[string]any) Logger
|
||||
Debug(args ...any)
|
||||
Debugf(format string, args ...any)
|
||||
Info(args ...any)
|
||||
Infof(format string, args ...any)
|
||||
Warn(args ...any)
|
||||
Warnf(format string, args ...any)
|
||||
Error(args ...any)
|
||||
Errorf(format string, args ...any)
|
||||
Fatal(args ...any)
|
||||
Fatalf(format string, args ...any)
|
||||
GetLevel() LogLevel
|
||||
IsLevelEnabled(level LogLevel) bool
|
||||
}
|
||||
|
||||
type LoggerOptions struct {
|
||||
Output io.Writer
|
||||
Format LogFormat
|
||||
Level LogLevel
|
||||
}
|
||||
|
||||
type LoggerOption func(opts *LoggerOptions)
|
||||
|
||||
func OutputLoggerOption(out io.Writer) LoggerOption {
|
||||
return func(opts *LoggerOptions) {
|
||||
opts.Output = out
|
||||
}
|
||||
}
|
||||
|
||||
func FormatLoggerOption(format LogFormat) LoggerOption {
|
||||
return func(opts *LoggerOptions) {
|
||||
opts.Format = format
|
||||
}
|
||||
}
|
||||
|
||||
func LevelLoggerOption(level LogLevel) LoggerOption {
|
||||
return func(opts *LoggerOptions) {
|
||||
opts.Level = level
|
||||
}
|
||||
}
|
Reference in New Issue
Block a user