debian-forge-composer/pkg/splunk_logger/splunk_hook.go

45 lines
834 B
Go

package logger
import (
"context"
"fmt"
"os"
"github.com/sirupsen/logrus"
)
type SplunkHook struct {
sl *SplunkLogger
}
func NewSplunkHook(context context.Context, host, port, token, source string) (*SplunkHook, error) {
url := fmt.Sprintf("https://%s:%s/services/collector/event", host, port)
hostname, err := os.Hostname()
if err != nil {
return nil, err
}
return &SplunkHook{
sl: NewSplunkLogger(context, url, token, source, hostname),
}, nil
}
func (sh *SplunkHook) Fire(entry *logrus.Entry) error {
msg, err := entry.String()
if err != nil {
return err
}
return sh.sl.LogWithTime(entry.Time, msg)
}
func (sh *SplunkHook) Levels() []logrus.Level {
return []logrus.Level{
logrus.PanicLevel,
logrus.FatalLevel,
logrus.ErrorLevel,
logrus.WarnLevel,
logrus.InfoLevel,
logrus.DebugLevel,
}
}