feat: respect pvr exclusions (#37)

This commit is contained in:
l3uddz
2022-04-14 16:18:06 +01:00
committed by GitHub
parent 2468d5b251
commit 79507adb4a
32 changed files with 321 additions and 99 deletions

View File

@@ -1,19 +1,55 @@
package logger
import (
"io"
"github.com/rs/zerolog"
"github.com/rs/zerolog/log"
)
func New(verbosity string) zerolog.Logger {
if verbosity == "" {
return log.Logger
}
level, err := zerolog.ParseLevel(verbosity)
if err != nil {
return log.Logger
}
return log.Level(level)
type logger struct {
log zerolog.Logger
writers []io.Writer
verbosity int
}
func Init(opts ...InitOption) zerolog.Logger {
// prepare logger
l := &logger{
writers: make([]io.Writer, 0),
verbosity: 0,
}
// loop options
for _, opt := range opts {
opt(l)
}
// set logger
l.log = log.Output(io.MultiWriter(l.writers...))
// set global logger
switch {
case l.verbosity == 1:
log.Logger = l.log.Level(zerolog.DebugLevel)
case l.verbosity > 1:
log.Logger = l.log.Level(zerolog.TraceLevel)
default:
log.Logger = l.log.Level(zerolog.InfoLevel)
}
return log.Logger
}
func Child(opts ...ChildOption) zerolog.Logger {
// default
l := log.With().
Logger()
// loop options
for _, opt := range opts {
opt(&l)
}
return l
}

70
logger/options.go Normal file
View File

@@ -0,0 +1,70 @@
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)
}
}