/kafkalogrus

Modified version of Kafka hook for Logrus

Primary LanguageGoApache License 2.0Apache-2.0

Kafka Logrus hook

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.

How to use

Import package

import kl "github.com/tracer0tong/kafkalogrus"

Create a hook (KafkaHook)

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()

Add hook to logger

logger.Hooks.Add(hook)

Modify topic

l := logger.WithField("topic", "nondefaulttopic")

The field name must be topic.

Send messages to logger

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")

Complete examples

https://github.com/tracer0tong/kafkalogrus/tree/master/examples