mirror of
https://github.com/grafana/grafana.git
synced 2025-02-16 18:34:52 -06:00
Logging: Fix syslog messages should be sent with correct severity (#47209)
This commit is contained in:
parent
8f1b208a35
commit
659cf17e10
@ -205,6 +205,35 @@ const (
|
||||
levelError
|
||||
)
|
||||
|
||||
func IsKey(v interface{}) bool {
|
||||
return v != nil && (v == Key() || v == gokitlevel.Key())
|
||||
}
|
||||
|
||||
func GetValue(v interface{}) Value {
|
||||
if v == nil {
|
||||
return nil
|
||||
}
|
||||
|
||||
if val, ok := v.(Value); ok {
|
||||
return val
|
||||
}
|
||||
|
||||
if val, ok := v.(gokitlevel.Value); ok {
|
||||
switch val {
|
||||
case gokitlevel.InfoValue():
|
||||
return InfoValue()
|
||||
case gokitlevel.WarnValue():
|
||||
return WarnValue()
|
||||
case gokitlevel.ErrorValue():
|
||||
return ErrorValue()
|
||||
case gokitlevel.DebugValue():
|
||||
return DebugValue()
|
||||
}
|
||||
}
|
||||
|
||||
return nil
|
||||
}
|
||||
|
||||
type levelValue struct {
|
||||
name string
|
||||
level
|
||||
|
@ -8,8 +8,8 @@ import (
|
||||
"os"
|
||||
|
||||
"github.com/go-kit/log"
|
||||
"github.com/go-kit/log/level"
|
||||
gokitsyslog "github.com/go-kit/log/syslog"
|
||||
"github.com/grafana/grafana/pkg/infra/log/level"
|
||||
"gopkg.in/ini.v1"
|
||||
)
|
||||
|
||||
@ -25,31 +25,26 @@ type SysLogHandler struct {
|
||||
|
||||
var selector = func(keyvals ...interface{}) syslog.Priority {
|
||||
for i := 0; i < len(keyvals); i += 2 {
|
||||
if keyvals[i] == level.Key() {
|
||||
if v, ok := keyvals[i+1].(string); ok {
|
||||
switch v {
|
||||
case "emergency":
|
||||
return syslog.LOG_EMERG
|
||||
case "alert":
|
||||
return syslog.LOG_ALERT
|
||||
case "critical":
|
||||
return syslog.LOG_CRIT
|
||||
case "error":
|
||||
if level.IsKey(keyvals[i]) {
|
||||
val := level.GetValue(keyvals[i+1])
|
||||
if val != nil {
|
||||
switch val {
|
||||
case level.ErrorValue():
|
||||
return syslog.LOG_ERR
|
||||
case "warning":
|
||||
case level.WarnValue():
|
||||
return syslog.LOG_WARNING
|
||||
case "notice":
|
||||
return syslog.LOG_NOTICE
|
||||
case "info":
|
||||
case level.InfoValue():
|
||||
return syslog.LOG_INFO
|
||||
case "debug":
|
||||
case level.DebugValue():
|
||||
return syslog.LOG_DEBUG
|
||||
}
|
||||
return syslog.LOG_LOCAL0
|
||||
}
|
||||
|
||||
break
|
||||
}
|
||||
}
|
||||
return syslog.LOG_LOCAL0
|
||||
|
||||
return syslog.LOG_INFO
|
||||
}
|
||||
|
||||
func NewSyslog(sec *ini.Section, format Formatedlogger) *SysLogHandler {
|
||||
@ -62,7 +57,7 @@ func NewSyslog(sec *ini.Section, format Formatedlogger) *SysLogHandler {
|
||||
handler.Tag = sec.Key("tag").MustString("")
|
||||
|
||||
if err := handler.Init(); err != nil {
|
||||
_ = level.Error(root).Log("Failed to init syslog log handler", "error", err)
|
||||
root.Error("Failed to init syslog log handler", "error", err)
|
||||
os.Exit(1)
|
||||
}
|
||||
handler.logger = gokitsyslog.NewSyslogLogger(handler.syslog, format, gokitsyslog.PrioritySelectorOption(selector))
|
||||
|
Loading…
Reference in New Issue
Block a user