Skip to content

Commit 4dad8bd

Browse files
Maxime Soulégravis
authored andcommitted
Change logrus level to syslog one translation
logrus has no equivalent of syslog LOG_NOTICE.
1 parent daf02e0 commit 4dad8bd

File tree

2 files changed

+50
-2
lines changed

2 files changed

+50
-2
lines changed

graylog_hook.go

Lines changed: 11 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -141,6 +141,16 @@ func (hook *GraylogHook) fire() {
141141
}
142142
}
143143

144+
func logrusLevelToSylog(level logrus.Level) int32 {
145+
// Till warn, logrus levels are lower than syslog by 1
146+
// (logrus has no equivalent of syslog LOG_NOTICE)
147+
if level <= logrus.WarnLevel {
148+
return int32(level) + 1
149+
}
150+
// From info, logrus levels are lower than syslog by 2
151+
return int32(level) + 2
152+
}
153+
144154
// sendEntry sends an entry to graylog synchronously
145155
func (hook *GraylogHook) sendEntry(entry graylogEntry) {
146156
if hook.gelfLogger == nil {
@@ -163,7 +173,7 @@ func (hook *GraylogHook) sendEntry(entry graylogEntry) {
163173
full = p
164174
}
165175

166-
level := int32(entry.Level) + 2 // logrus levels are lower than syslog by 2
176+
level := logrusLevelToSylog(entry.Level)
167177

168178
// Don't modify entry.Data directly, as the entry will used after this hook was fired
169179
extra := map[string]interface{}{}

graylog_hook_test.go

Lines changed: 39 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,8 +11,8 @@ import (
1111
"testing"
1212
"time"
1313

14-
"github.com/sirupsen/logrus"
1514
pkgerrors "github.com/pkg/errors"
15+
"github.com/sirupsen/logrus"
1616
)
1717

1818
const SyslogInfoLevel = 6
@@ -293,3 +293,41 @@ runtime.*
293293
t.Errorf("Stack Trace not as expected. Got:\n%s\n", stacktrace)
294294
}
295295
}
296+
297+
func TestLogrusLevelToSylog(t *testing.T) {
298+
// Syslog constants
299+
const (
300+
LOG_EMERG = 0 /* system is unusable */
301+
LOG_ALERT = 1 /* action must be taken immediately */
302+
LOG_CRIT = 2 /* critical conditions */
303+
LOG_ERR = 3 /* error conditions */
304+
LOG_WARNING = 4 /* warning conditions */
305+
LOG_NOTICE = 5 /* normal but significant condition */
306+
LOG_INFO = 6 /* informational */
307+
LOG_DEBUG = 7 /* debug-level messages */
308+
)
309+
310+
if logrusLevelToSylog(logrus.DebugLevel) != LOG_DEBUG {
311+
t.Error("logrusLevelToSylog(DebugLevel) != LOG_DEBUG")
312+
}
313+
314+
if logrusLevelToSylog(logrus.InfoLevel) != LOG_INFO {
315+
t.Error("logrusLevelToSylog(InfoLevel) != LOG_INFO")
316+
}
317+
318+
if logrusLevelToSylog(logrus.WarnLevel) != LOG_WARNING {
319+
t.Error("logrusLevelToSylog(WarnLevel) != LOG_WARNING")
320+
}
321+
322+
if logrusLevelToSylog(logrus.ErrorLevel) != LOG_ERR {
323+
t.Error("logrusLevelToSylog(ErrorLevel) != LOG_ERR")
324+
}
325+
326+
if logrusLevelToSylog(logrus.FatalLevel) != LOG_CRIT {
327+
t.Error("logrusLevelToSylog(FatalLevel) != LOG_CRIT")
328+
}
329+
330+
if logrusLevelToSylog(logrus.PanicLevel) != LOG_ALERT {
331+
t.Error("logrusLevelToSylog(PanicLevel) != LOG_ALERT")
332+
}
333+
}

0 commit comments

Comments
 (0)