https://github.com/rogierlommers/logrus-redis-hook
Hook for Logrus which enables logging to RELK stack (Redis, Elasticsearch, Logstash and Kibana)
https://github.com/rogierlommers/logrus-redis-hook
elasticsearch hook kibana logrus logstash redis redis-hook
Last synced: 5 months ago
JSON representation
Hook for Logrus which enables logging to RELK stack (Redis, Elasticsearch, Logstash and Kibana)
- Host: GitHub
- URL: https://github.com/rogierlommers/logrus-redis-hook
- Owner: rogierlommers
- License: mit
- Created: 2016-01-26T14:16:52.000Z (over 10 years ago)
- Default Branch: master
- Last Pushed: 2021-09-02T12:54:48.000Z (almost 5 years ago)
- Last Synced: 2024-06-18T18:51:31.075Z (almost 2 years ago)
- Topics: elasticsearch, hook, kibana, logrus, logstash, redis, redis-hook
- Language: Go
- Homepage:
- Size: 54.7 KB
- Stars: 36
- Watchers: 5
- Forks: 13
- Open Issues: 0
-
Metadata Files:
- Readme: readme.md
- License: LICENSE
Awesome Lists containing this project
README
# Redis Hook for [Logrus](https://github.com/Sirupsen/logrus) 
[](https://goreportcard.com/report/github.com/rogierlommers/logrus-redis-hook)
## Why?
Useful for centralized logging, using a RELK stack (Redis, Elasticsearch, Logstash and Kibana). When the hook is installed, all log messages are sent to a Redis server, in Logstash message V0 or V1 format, ready to be parsed/processed by Logstash.
## Install
```shell
$ go get github.com/rogierlommers/logrus-redis-hook
```

## Usage
```go
package main
import (
"io/ioutil"
"github.com/sirupsen/logrus"
"github.com/rogierlommers/logrus-redis-hook"
)
func init() {
hookConfig := logredis.HookConfig{
Host: "localhost",
Key: "my_redis_key",
Format: "v0",
App: "my_app_name",
Port: 6379,
Hostname: "my_app_hostname", // will be sent to field @source_host
DB: 0, // optional
TTL: 3600,
}
hook, err := logredis.NewHook(hookConfig)
if err == nil {
logrus.AddHook(hook)
} else {
logrus.Errorf("logredis error: %q", err)
}
}
func main() {
// when hook is injected succesfully, logs will be sent to redis server
logrus.Info("just some info logging...")
// we also support log.WithFields()
logrus.WithFields(logrus.Fields{
"animal": "walrus",
"foo": "bar",
"this": "that"}).
Info("additional fields are being logged as well")
// If you want to disable writing to stdout, use setOutput
logrus.SetOutput(ioutil.Discard)
logrus.Info("This will only be sent to Redis")
}
```
## Testing
Please see the `docker-compose` directory for information about how to test. There is a readme inside.
## In case of hook: disable writing to stdout
See this: https://github.com/Sirupsen/logrus/issues/328#issuecomment-210758435