Files
nabarr/logger/options.go

71 lines
1.1 KiB
Go
Raw Normal View History

2022-04-14 16:18:06 +01:00
package logger
import (
"os"
"time"
"github.com/natefinch/lumberjack"
"github.com/rs/zerolog"
)
/* core logger options */
type InitOption func(*logger)
func WithConsole() InitOption {
return func(l *logger) {
l.writers = append(l.writers, zerolog.ConsoleWriter{
TimeFormat: time.Stamp,
Out: os.Stderr,
})
}
}
func WithFile(filepath string) InitOption {
return func(l *logger) {
l.writers = append(l.writers, zerolog.ConsoleWriter{
TimeFormat: time.Stamp,
Out: &lumberjack.Logger{
Filename: filepath,
MaxSize: 5,
MaxAge: 14,
MaxBackups: 5,
},
NoColor: true,
})
}
}
func WithVerbosity(verbosity int) InitOption {
return func(l *logger) {
l.verbosity = verbosity
}
}
/* child logger options */
type ChildOption func(*zerolog.Logger)
func WithName(name string) ChildOption {
return func(l *zerolog.Logger) {
*l = l.With().
Str("caller", name).
Logger()
}
}
func WithLevel(level string) ChildOption {
return func(l *zerolog.Logger) {
if level == "" {
return
}
zl, err := zerolog.ParseLevel(level)
if err != nil {
return
}
*l = l.Level(zl)
}
}