...
1# Syslog Hooks for Logrus <img src="http://i.imgur.com/hTeVwmJ.png" width="40" height="40" alt=":walrus:" class="emoji" title=":walrus:"/>
2
3## Usage
4
5```go
6import (
7 "log/syslog"
8 "github.com/sirupsen/logrus"
9 lSyslog "github.com/sirupsen/logrus/hooks/syslog"
10)
11
12func main() {
13 log := logrus.New()
14 hook, err := lSyslog.NewSyslogHook("udp", "localhost:514", syslog.LOG_INFO, "")
15
16 if err == nil {
17 log.Hooks.Add(hook)
18 }
19}
20```
21
22If you want to connect to local syslog (Ex. "/dev/log" or "/var/run/syslog" or "/var/run/log"). Just assign empty string to the first two parameters of `NewSyslogHook`. It should look like the following.
23
24```go
25import (
26 "log/syslog"
27 "github.com/sirupsen/logrus"
28 lSyslog "github.com/sirupsen/logrus/hooks/syslog"
29)
30
31func main() {
32 log := logrus.New()
33 hook, err := lSyslog.NewSyslogHook("", "", syslog.LOG_INFO, "")
34
35 if err == nil {
36 log.Hooks.Add(hook)
37 }
38}
39```
40
41### Different log levels for local and remote logging
42
43By default `NewSyslogHook()` sends logs through the hook for all log levels. If you want to have
44different log levels between local logging and syslog logging (i.e. respect the `priority` argument
45passed to `NewSyslogHook()`), you need to implement the `logrus_syslog.SyslogHook` interface
46overriding `Levels()` to return only the log levels you're interested on.
47
48The following example shows how to log at **DEBUG** level for local logging and **WARN** level for
49syslog logging:
50
51```go
52package main
53
54import (
55 "log/syslog"
56
57 log "github.com/sirupsen/logrus"
58 logrus_syslog "github.com/sirupsen/logrus/hooks/syslog"
59)
60
61type customHook struct {
62 *logrus_syslog.SyslogHook
63}
64
65func (h *customHook) Levels() []log.Level {
66 return []log.Level{log.WarnLevel}
67}
68
69func main() {
70 log.SetLevel(log.DebugLevel)
71
72 hook, err := logrus_syslog.NewSyslogHook("tcp", "localhost:5140", syslog.LOG_WARNING, "myTag")
73 if err != nil {
74 panic(err)
75 }
76
77 log.AddHook(&customHook{hook})
78
79 //...
80}
81```
View as plain text