logrustash

package module
v0.0.0-...-2e2a0b5 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Aug 23, 2017 License: MIT Imports: 3 Imported by: 0

README

Logstash hook for logrus

Build Status Go Report Status

Use this hook to send the logs to Logstash.

Usage

package main

import (
        "log"

        "github.com/sirupsen/logrus"
        "github.com/bshuster-repo/logrus-logstash-hook"
)

func main() {
        log := logrus.New()
        conn, err := net.Dial("tcp", "logstash.mycompany.net:8911")
        if err != nil {
            log.Fatal(err)
        }
        hook, err := logrustash.New(conn, logrustash.DefaultFormatter(logrus.Fields{"type": "myappName"}))

        if err != nil {
                log.Fatal(err)
        }
        log.Hooks.Add(hook)
        ctx := log.WithFields(logrus.Fields{
          "method": "main",
        })
        ...
        ctx.Info("Hello World!")
}

This is how it will look like:

{
    "@timestamp" => "2016-02-29T16:57:23.000Z",
      "@version" => "1",
         "level" => "info",
       "message" => "Hello World!",
        "method" => "main",
          "host" => "172.17.0.1",
          "port" => 45199,
          "type" => "myappName"
}

Maintainers

Name Github Twitter
Boaz Shuster ripcurld0 @ripcurld0

License

MIT.

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func DefaultFormatter

func DefaultFormatter(fields logrus.Fields) logrus.Formatter

DefaultFormatter returns a default Logstash formatter: A JSON format with "@version" set to "1" (unless set differently in `fields`, "type" to "log" (unless set differently in `fields`), "@timestamp" to the log time and "message" to the log message.

Note: to set a different configuration use the `LogstashFormatter` structure.

Types

type Hook

type Hook struct {
	// contains filtered or unexported fields
}

Hook represents a Logstash hook. It has two fields: writer to write the entry to Logstash and formatter to format the entry to a Logstash format before sending.

To initialize it use the `New` function.

func New

func New(w io.Writer, f logrus.Formatter) Hook

New returns a new logrus.Hook for Logstash.

To create a new hook that sends logs to `tcp://logstash.corp.io:9999`:

conn, _ := net.Dial("tcp", "logstash.corp.io:9999") hook := logrustash.New(conn, logrustash.DefaultFormatter())

func (Hook) Fire

func (h Hook) Fire(e *logrus.Entry) error

Fire takes, formats and sends the entry to Logstash. Hook's formatter is used to format the entry into Logstash format and Hook's writer is used to write the formatted entry to the Logstash instance.

func (Hook) Levels

func (h Hook) Levels() []logrus.Level

Levels returns all logrus levels.

func (*Hook) RemoveLevel

func (h *Hook) RemoveLevel(level logrus.Level)

func (*Hook) SetLevel

func (h *Hook) SetLevel(level logrus.Level)

type LogstashFormatter

type LogstashFormatter struct {
	logrus.Formatter
	logrus.Fields
}

LogstashFormatter represents a Logstash format. It has logrus.Formatter which formats the entry and logrus.Fields which are added to the JSON message if not given in the entry data.

Note: use the `DefaultFormatter` function to set a default Logstash formatter.

func (LogstashFormatter) Format

func (f LogstashFormatter) Format(e *logrus.Entry) ([]byte, error)

Format formats an entry to a Logstash format according to the given Formatter and Fields.

Note: the given entry is copied and not changed during the formatting process.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL