Logger migration from log15 to gokit/log (#41636)
* migrate log15 to gokit/log * fix console log * update some unittest * fix all unittest * fix the build * Update pkg/infra/log/log.go Co-authored-by: Yuriy Tseretyan <tceretian@gmail.com> * general type vector * correct the level key Co-authored-by: Yuriy Tseretyan <tceretian@gmail.com>
This commit is contained in:
co-authored by
Yuriy Tseretyan
parent
8898a5f0a0
commit
a8eef45a44
+47
-38
@@ -4,11 +4,12 @@
|
||||
package log
|
||||
|
||||
import (
|
||||
"errors"
|
||||
"log/syslog"
|
||||
"os"
|
||||
|
||||
"github.com/inconshreveable/log15"
|
||||
"github.com/go-kit/log"
|
||||
"github.com/go-kit/log/level"
|
||||
gokitsyslog "github.com/go-kit/log/syslog"
|
||||
"gopkg.in/ini.v1"
|
||||
)
|
||||
|
||||
@@ -18,13 +19,41 @@ type SysLogHandler struct {
|
||||
Address string
|
||||
Facility string
|
||||
Tag string
|
||||
Format log15.Format
|
||||
Format Formatedlogger
|
||||
logger log.Logger
|
||||
}
|
||||
|
||||
func NewSyslog(sec *ini.Section, format log15.Format) *SysLogHandler {
|
||||
handler := &SysLogHandler{
|
||||
Format: log15.LogfmtFormat(),
|
||||
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":
|
||||
return syslog.LOG_ERR
|
||||
case "warning":
|
||||
return syslog.LOG_WARNING
|
||||
case "notice":
|
||||
return syslog.LOG_NOTICE
|
||||
case "info":
|
||||
return syslog.LOG_INFO
|
||||
case "debug":
|
||||
return syslog.LOG_DEBUG
|
||||
}
|
||||
return syslog.LOG_LOCAL0
|
||||
}
|
||||
}
|
||||
}
|
||||
return syslog.LOG_LOCAL0
|
||||
}
|
||||
|
||||
func NewSyslog(sec *ini.Section, format Formatedlogger) *SysLogHandler {
|
||||
handler := &SysLogHandler{}
|
||||
|
||||
handler.Format = format
|
||||
handler.Network = sec.Key("network").MustString("")
|
||||
@@ -33,18 +62,16 @@ func NewSyslog(sec *ini.Section, format log15.Format) *SysLogHandler {
|
||||
handler.Tag = sec.Key("tag").MustString("")
|
||||
|
||||
if err := handler.Init(); err != nil {
|
||||
Root.Error("Failed to init syslog log handler", "error", err)
|
||||
_ = level.Error(Root).Log("Failed to init syslog log handler", "error", err)
|
||||
os.Exit(1)
|
||||
}
|
||||
|
||||
handler.logger = gokitsyslog.NewSyslogLogger(handler.syslog, format, gokitsyslog.PrioritySelectorOption(selector))
|
||||
return handler
|
||||
}
|
||||
|
||||
func (sw *SysLogHandler) Init() error {
|
||||
prio, err := parseFacility(sw.Facility)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
// the facility is the origin of the syslog message
|
||||
prio := parseFacility(sw.Facility)
|
||||
|
||||
w, err := syslog.Dial(sw.Network, sw.Address, prio, sw.Tag)
|
||||
if err != nil {
|
||||
@@ -55,26 +82,8 @@ func (sw *SysLogHandler) Init() error {
|
||||
return nil
|
||||
}
|
||||
|
||||
func (sw *SysLogHandler) Log(r *log15.Record) error {
|
||||
var err error
|
||||
|
||||
msg := string(sw.Format.Format(r))
|
||||
|
||||
switch r.Lvl {
|
||||
case log15.LvlDebug:
|
||||
err = sw.syslog.Debug(msg)
|
||||
case log15.LvlInfo:
|
||||
err = sw.syslog.Info(msg)
|
||||
case log15.LvlWarn:
|
||||
err = sw.syslog.Warning(msg)
|
||||
case log15.LvlError:
|
||||
err = sw.syslog.Err(msg)
|
||||
case log15.LvlCrit:
|
||||
err = sw.syslog.Crit(msg)
|
||||
default:
|
||||
err = errors.New("invalid syslog level")
|
||||
}
|
||||
|
||||
func (sw *SysLogHandler) Log(keyvals ...interface{}) error {
|
||||
err := sw.logger.Log(keyvals...)
|
||||
return err
|
||||
}
|
||||
|
||||
@@ -95,11 +104,11 @@ var facilities = map[string]syslog.Priority{
|
||||
"local7": syslog.LOG_LOCAL7,
|
||||
}
|
||||
|
||||
func parseFacility(facility string) (syslog.Priority, error) {
|
||||
prio, ok := facilities[facility]
|
||||
if !ok {
|
||||
return syslog.LOG_LOCAL0, errors.New("invalid syslog facility")
|
||||
func parseFacility(facility string) syslog.Priority {
|
||||
v, found := facilities[facility]
|
||||
if !found {
|
||||
// default the facility level to LOG_LOCAL7
|
||||
return syslog.LOG_LOCAL7
|
||||
}
|
||||
|
||||
return prio, nil
|
||||
return v
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user