first commit
This commit is contained in:
@@ -0,0 +1,74 @@
|
||||
package rotatehook
|
||||
|
||||
import (
|
||||
"sync"
|
||||
|
||||
"git.corp.kornet35.ru/gopkg/logrus"
|
||||
"git.corp.kornet35.ru/gopkg/lumberjack/v2"
|
||||
)
|
||||
|
||||
type Config struct {
|
||||
Filename string
|
||||
MaxSize int
|
||||
MaxAge int
|
||||
MaxBackups int
|
||||
LocalTime bool
|
||||
Compress bool
|
||||
// FileMode os.FileMode
|
||||
Formatter logrus.Formatter
|
||||
Level logrus.Level
|
||||
Enabled bool
|
||||
}
|
||||
|
||||
type RotateHook struct {
|
||||
logger *lumberjack.Logger
|
||||
mu sync.RWMutex
|
||||
cfg *Config
|
||||
}
|
||||
|
||||
func NewRotateHook(cfg *Config) *RotateHook {
|
||||
h := &RotateHook{
|
||||
cfg: cfg,
|
||||
logger: &lumberjack.Logger{
|
||||
Filename: cfg.Filename,
|
||||
MaxSize: cfg.MaxSize,
|
||||
MaxAge: cfg.MaxAge,
|
||||
MaxBackups: cfg.MaxBackups,
|
||||
LocalTime: cfg.LocalTime,
|
||||
Compress: cfg.Compress,
|
||||
// FileMode: cfg.FileMode,
|
||||
},
|
||||
}
|
||||
|
||||
return h
|
||||
}
|
||||
|
||||
func (h *RotateHook) Levels() []logrus.Level {
|
||||
h.mu.RLock()
|
||||
defer h.mu.RUnlock()
|
||||
return logrus.AllLevels[:h.cfg.Level+1]
|
||||
}
|
||||
|
||||
func (h *RotateHook) Fire(entry *logrus.Entry) (err error) {
|
||||
b, err := h.cfg.Formatter.Format(entry)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
if h.Enabled() {
|
||||
h.logger.Write(b)
|
||||
}
|
||||
|
||||
return nil
|
||||
}
|
||||
|
||||
func (h *RotateHook) Enabled() bool {
|
||||
h.mu.RLock()
|
||||
defer h.mu.RUnlock()
|
||||
return h.cfg.Enabled
|
||||
}
|
||||
|
||||
func (h *RotateHook) SetEnabled(enabled bool) {
|
||||
h.mu.Lock()
|
||||
defer h.mu.Unlock()
|
||||
h.cfg.Enabled = enabled
|
||||
}
|
||||
Reference in New Issue
Block a user