syslog logging: support setting facility in config

This commit is contained in:
Ximalas
2019-02-01 21:44:51 +01:00
committed by Christian Schwarz
parent 0230c6321f
commit fc311a9fd6
5 changed files with 75 additions and 2 deletions
+39 -1
View File
@@ -5,6 +5,7 @@ import (
"github.com/pkg/errors"
"github.com/zrepl/yaml-config"
"io/ioutil"
"log/syslog"
"os"
"reflect"
"regexp"
@@ -38,7 +39,7 @@ func (j JobEnum) Name() string {
case *PullJob: name = v.Name
case *SourceJob: name = v.Name
default:
panic(fmt.Sprintf("unknownn job type %T", v))
panic(fmt.Sprintf("unknown job type %T", v))
}
return name
}
@@ -258,6 +259,7 @@ type StdoutLoggingOutlet struct {
type SyslogLoggingOutlet struct {
LoggingOutletCommon `yaml:",inline"`
Facility syslog.Priority `yaml:"facility,default=local0"`
RetryInterval time.Duration `yaml:"retry_interval,positive,default=10s"`
}
@@ -284,6 +286,16 @@ type PrometheusMonitoring struct {
Listen string `yaml:"listen"`
}
type SyslogFacilityEnum struct {
Ret interface{}
}
type SyslogFacilityEnumList []SyslogFacilityEnum
type SyslogFacility struct {
Facility syslog.Priority
}
type GlobalControl struct {
SockPath string `yaml:"sockpath,default=/var/run/zrepl/control"`
}
@@ -389,6 +401,32 @@ func (t *MonitoringEnum) UnmarshalYAML(u func(interface{}, bool) error) (err err
return
}
func (t *SyslogFacilityEnum) UnmarshalYAML(u func(interface{}, bool) error) (err error) {
t.Ret, err = enumUnmarshal(u, map[string]interface{}{
"kern": &SyslogFacility{syslog.LOG_KERN},
"user": &SyslogFacility{syslog.LOG_USER},
"mail": &SyslogFacility{syslog.LOG_MAIL},
"daemon": &SyslogFacility{syslog.LOG_DAEMON},
"auth": &SyslogFacility{syslog.LOG_AUTH},
"syslog": &SyslogFacility{syslog.LOG_SYSLOG},
"lpr": &SyslogFacility{syslog.LOG_LPR},
"news": &SyslogFacility{syslog.LOG_NEWS},
"uucp": &SyslogFacility{syslog.LOG_UUCP},
"cron": &SyslogFacility{syslog.LOG_CRON},
"authpriv": &SyslogFacility{syslog.LOG_AUTHPRIV},
"ftp": &SyslogFacility{syslog.LOG_FTP},
"local0": &SyslogFacility{syslog.LOG_LOCAL0},
"local1": &SyslogFacility{syslog.LOG_LOCAL1},
"local2": &SyslogFacility{syslog.LOG_LOCAL2},
"local3": &SyslogFacility{syslog.LOG_LOCAL3},
"local4": &SyslogFacility{syslog.LOG_LOCAL4},
"local5": &SyslogFacility{syslog.LOG_LOCAL5},
"local6": &SyslogFacility{syslog.LOG_LOCAL6},
"local7": &SyslogFacility{syslog.LOG_LOCAL7},
})
return
}
var ConfigFileDefaultLocations = []string{
"/etc/zrepl/zrepl.yml",
"/usr/local/etc/zrepl/zrepl.yml",