ecs-agent/logger/custom_receiver.go (50 lines of code) (raw):
package logger
import (
"fmt"
"github.com/cihub/seelog"
)
// CustomReceiver defines the interface for custom logging implementations
type CustomReceiver interface {
GetOutputFormat() string
Trace(message string)
Debug(message string)
Info(message string)
Warn(message string)
Error(message string)
Critical(message string)
Flush() error
Close() error
}
// internal wrapper that implements seelog.CustomReceiver
type customReceiverWrapper struct {
receiver CustomReceiver
}
func (w *customReceiverWrapper) ReceiveMessage(message string, level seelog.LogLevel, context seelog.LogContextInterface) error {
switch level {
case seelog.TraceLvl:
w.receiver.Trace(message)
case seelog.DebugLvl:
w.receiver.Debug(message)
case seelog.InfoLvl:
w.receiver.Info(message)
case seelog.WarnLvl:
w.receiver.Warn(message)
case seelog.ErrorLvl:
w.receiver.Error(message)
case seelog.CriticalLvl:
w.receiver.Critical(message)
default:
fmt.Printf("Unhandled level: %v", level)
}
return nil
}
func (w *customReceiverWrapper) AfterParse(initArgs seelog.CustomReceiverInitArgs) error {
return nil
}
func (w *customReceiverWrapper) Flush() {
err := w.receiver.Flush()
if err != nil {
fmt.Printf("Couldn't flush the logger due to: %v", err)
}
}
func (w *customReceiverWrapper) Close() error {
return w.receiver.Close()
}