Skip to content

tracer0tong/kafkalogrus

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

11 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

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

About

Modified version of Kafka hook for Logrus

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages