mirror of
https://github.com/eosswedenorg/thalos
synced 2026-06-18 04:40:03 +02:00
commit
fc97b8cd02
4 changed files with 78 additions and 11 deletions
48
app/log/HookWriter.go
Normal file
48
app/log/HookWriter.go
Normal file
|
|
@ -0,0 +1,48 @@
|
|||
package log
|
||||
|
||||
import (
|
||||
"io"
|
||||
|
||||
log "github.com/sirupsen/logrus"
|
||||
)
|
||||
|
||||
type HookWriter struct {
|
||||
Writer io.Writer
|
||||
LogLevels []log.Level
|
||||
}
|
||||
|
||||
func (hook *HookWriter) Fire(entry *log.Entry) error {
|
||||
line, err := entry.String()
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
_, err = hook.Writer.Write([]byte(line))
|
||||
return err
|
||||
}
|
||||
|
||||
func (hook *HookWriter) Levels() []log.Level {
|
||||
return hook.LogLevels
|
||||
}
|
||||
|
||||
func MakeStdHook(writer io.Writer) *HookWriter {
|
||||
return &HookWriter{
|
||||
Writer: writer,
|
||||
LogLevels: []log.Level{
|
||||
log.InfoLevel,
|
||||
log.DebugLevel,
|
||||
},
|
||||
}
|
||||
}
|
||||
|
||||
func MakeErrorHook(writer io.Writer) *HookWriter {
|
||||
return &HookWriter{
|
||||
Writer: writer,
|
||||
LogLevels: []log.Level{
|
||||
log.ErrorLevel,
|
||||
log.WarnLevel,
|
||||
log.FatalLevel,
|
||||
log.PanicLevel,
|
||||
log.TraceLevel,
|
||||
},
|
||||
}
|
||||
}
|
||||
|
|
@ -46,8 +46,12 @@ func NewRotatingFile(filename string, maxSize int64, maxAge time.Duration) (*Rot
|
|||
}, nil
|
||||
}
|
||||
|
||||
func NewRotatingFileFromConfig(config Config) (*RotatingFile, error) {
|
||||
return NewRotatingFile(config.GetFilePath(), int64(config.MaxFileSize), config.MaxTime)
|
||||
func NewRotatingFileFromConfig(config Config, suffix string) (*RotatingFile, error) {
|
||||
if len(suffix) > 0 {
|
||||
suffix = "_" + suffix
|
||||
}
|
||||
|
||||
return NewRotatingFile(config.GetFilePath()+suffix+".log", int64(config.MaxFileSize), config.MaxTime)
|
||||
}
|
||||
|
||||
func (w *RotatingFile) newFilename(name string) string {
|
||||
|
|
@ -58,6 +62,10 @@ func (w *RotatingFile) newFilename(name string) string {
|
|||
return fmt.Sprintf("%s-%s%s", name, time.Now().Format(w.format), ext)
|
||||
}
|
||||
|
||||
func (w RotatingFile) GetFilename() string {
|
||||
return path.Base(w.fd.Name())
|
||||
}
|
||||
|
||||
// Rotate the file.
|
||||
func (w *RotatingFile) Rotate() error {
|
||||
dst, err := os.OpenFile(w.newFilename(w.fd.Name()), os.O_CREATE|os.O_WRONLY, 0o666)
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue