mirror of
https://github.com/zrepl/zrepl.git
synced 2024-11-22 16:34:32 +01:00
56 lines
1.1 KiB
Go
56 lines
1.1 KiB
Go
package cmd
|
|
|
|
import (
|
|
"bytes"
|
|
"fmt"
|
|
"github.com/sirupsen/logrus"
|
|
"os"
|
|
)
|
|
|
|
type CLIFormatter struct {
|
|
}
|
|
|
|
func (f CLIFormatter) Format(e *logrus.Entry) (out []byte, err error) {
|
|
var buf bytes.Buffer
|
|
fmt.Fprintf(&buf, "%s\n", e.Message)
|
|
return buf.Bytes(), nil
|
|
}
|
|
|
|
var stdhookStderrLevels []logrus.Level = []logrus.Level{
|
|
logrus.PanicLevel, logrus.FatalLevel, logrus.ErrorLevel, logrus.WarnLevel,
|
|
}
|
|
|
|
type Stdhook struct {
|
|
}
|
|
|
|
func NewStdHook() *Stdhook {
|
|
return &Stdhook{}
|
|
}
|
|
|
|
func (h *Stdhook) Levels() []logrus.Level {
|
|
// Accept all so we can filter the output later
|
|
return []logrus.Level{
|
|
logrus.PanicLevel, logrus.FatalLevel, logrus.ErrorLevel, logrus.WarnLevel,
|
|
logrus.InfoLevel, logrus.DebugLevel,
|
|
}
|
|
}
|
|
|
|
func (h *Stdhook) Fire(entry *logrus.Entry) error {
|
|
s, err := entry.String()
|
|
if err != nil {
|
|
return err
|
|
}
|
|
for _, l := range stdhookStderrLevels {
|
|
if l == entry.Level {
|
|
fmt.Fprint(os.Stderr, s)
|
|
return nil
|
|
}
|
|
}
|
|
fmt.Fprint(os.Stdout, s)
|
|
return nil
|
|
}
|
|
|
|
type nopWriter int
|
|
|
|
func (w nopWriter) Write(p []byte) (n int, err error) { return len(p), nil }
|