Files
supercronic/log/hook/splitstream.go
Fei Yang 8b4edf5920 refactor: reap zombie process and opt-out with no-reap flag (#172)
* fix: random waitid error

fix https://github.com/aptible/supercronic/issues/171

* fix(reap): forward signal

* refactor: modify reaper to get supercronic exitStatus

* fix(reaper): unify signal list & fix signal forward

* chore: replace ioutil to io

* fix(test): ci timeout

* opt-out with no-reap flag

Co-authored-by: Josh Raker <48493233+joshraker@users.noreply.github.com>

* fix: typo on signal

* fix: args pass to supercronic

* fix(test): remove removed flag

* chore: remove misleading comment

---------

Co-authored-by: Josh Raker <48493233+joshraker@users.noreply.github.com>
2024-10-10 12:44:43 -04:00

48 lines
822 B
Go

package hook
import (
"io"
"github.com/sirupsen/logrus"
)
type writerHook struct {
writer io.Writer
levels []logrus.Level
}
func (h *writerHook) Levels() []logrus.Level {
return h.levels
}
func (h *writerHook) Fire(entry *logrus.Entry) error {
serialized, err := entry.Logger.Formatter.Format(entry)
if err != nil {
return err
}
_, err = h.writer.Write(serialized)
return err
}
func RegisterSplitLogger(logger *logrus.Logger, outWriter io.Writer, errWriter io.Writer) {
logger.SetOutput(io.Discard)
logger.AddHook(&writerHook{
writer: outWriter,
levels: []logrus.Level{
logrus.DebugLevel,
logrus.InfoLevel,
},
})
logger.AddHook(&writerHook{
writer: errWriter,
levels: []logrus.Level{
logrus.WarnLevel,
logrus.ErrorLevel,
logrus.FatalLevel,
logrus.PanicLevel,
},
})
}