evalphobia / logrus_fluent

fluentd hooks for logrus
Apache License 2.0
45 stars 22 forks source link

Fluentd Hook for Logrus :walrus:

GoDoc License: Apache 2.0 Release Travis Status wercker Status Coveralls Coverage Go Report Card Downloads Code Climate BCH compliance

Usage

import (
    "github.com/sirupsen/logrus"
    "github.com/evalphobia/logrus_fluent"
)

func main() {
    hook, err := logrus_fluent.NewWithConfig(logrus_fluent.Config{
        Host: "localhost",
        Port: 24224,
    })
    if err != nil {
        panic(err)
    }

    // set custom fire level
    hook.SetLevels([]logrus.Level{
        logrus.PanicLevel,
        logrus.ErrorLevel,
    })

    // set static tag
    hook.SetTag("original.tag")

    // ignore field
    hook.AddIgnore("context")

    // filter func
    hook.AddFilter("error", logrus_fluent.FilterError)

    logrus.AddHook(hook)
}

func logging(ctx context.Context) {
    logrus.WithFields(logrus.Fields{
        "value":   "some content...",
        "error":   errors.New("unknown error"), // this field will be applied filter function in the hook.
        "context": ctx,                         // this field will be ignored in the hook.
    }).Error("error message")
}

Special fields

Some logrus fields have a special meaning in this hook.