Modified version of Kafka hook for Logrus. Just need hook for my projects and I couldn't see that somebody actively supports any related projects.
A logrus.Hook which sends a single log entry to kafka topics simultaneously.
import kl "github.com/tracer0tong/kafkalogrus"
NewKafkaLogrusHook(id string,
levels []logrus.Level,
formatter logrus.Formatter,
brokers []string,
defaultTopic string,
injectHostname bool) (*KafkaHook, error)
- id: hook identifier
- levels: logrus.Levels supported by the hook
- formatter: logrus.Formatter used by the hook
- brokers: Kafka brokers
- defaultTopic: default Kafka topic for messages
- injectHostname: if true, will inject os.Hostname() to each request
For example:
hook, err := kl.NewKafkaHook(
"klh",
[]logrus.Level{logrus.InfoLevel, logrus.WarnLevel, logrus.ErrorLevel},
&logrus.JSONFormatter{},
[]string{"192.168.60.5:9092", "192.168.60.6:9092", "192.168.60.7:9092"},
"test",
true
)
Create a logrus.Logger
For example:
logger := logrus.New()
logger.Hooks.Add(hook)
l := logger.WithField("topic", "nondefaulttopic")
The field name must be topic.
For example:
l.Debug("This must not be logged")
l.Info("This is an Info msg")
l.Warn("This is a Warn msg")
l.Error("This is an Error msg")
https://github.com/tracer0tong/kafkalogrus/tree/master/examples