Add --log-opt to specify facility for syslog driver

Signed-off-by: Dennis Docter <dennis@d23.nl>
Upstream-commit: 609e7b0a55d4082fce40eabae3a06ca57c188ba5
Component: engine
This commit is contained in:
Dennis Docter
2015-06-23 14:04:25 +02:00
parent d1559e41df
commit f157b240b8
2 changed files with 77 additions and 2 deletions
@@ -3,12 +3,14 @@
package syslog
import (
"errors"
"io"
"log/syslog"
"net"
"net/url"
"os"
"path"
"strconv"
"strings"
"github.com/Sirupsen/logrus"
@@ -18,6 +20,29 @@ import (
const name = "syslog"
var facilities = map[string]syslog.Priority{
"kern": syslog.LOG_KERN,
"user": syslog.LOG_USER,
"mail": syslog.LOG_MAIL,
"daemon": syslog.LOG_DAEMON,
"auth": syslog.LOG_AUTH,
"syslog": syslog.LOG_SYSLOG,
"lpr": syslog.LOG_LPR,
"news": syslog.LOG_NEWS,
"uucp": syslog.LOG_UUCP,
"cron": syslog.LOG_CRON,
"authpriv": syslog.LOG_AUTHPRIV,
"ftp": syslog.LOG_FTP,
"local0": syslog.LOG_LOCAL0,
"local1": syslog.LOG_LOCAL1,
"local2": syslog.LOG_LOCAL2,
"local3": syslog.LOG_LOCAL3,
"local4": syslog.LOG_LOCAL4,
"local5": syslog.LOG_LOCAL5,
"local6": syslog.LOG_LOCAL6,
"local7": syslog.LOG_LOCAL7,
}
type Syslog struct {
writer *syslog.Writer
}
@@ -39,10 +64,15 @@ func New(ctx logger.Context) (logger.Logger, error) {
return nil, err
}
facility, err := parseFacility(ctx.Config["syslog-facility"])
if err != nil {
return nil, err
}
log, err := syslog.Dial(
proto,
address,
syslog.LOG_DAEMON,
facility,
path.Base(os.Args[0])+"/"+tag,
)
if err != nil {
@@ -102,3 +132,20 @@ func parseAddress(address string) (string, string, error) {
return "", "", nil
}
func parseFacility(facility string) (syslog.Priority, error) {
if facility == "" {
return syslog.LOG_DAEMON, nil
}
if syslogFacility, valid := facilities[facility]; valid {
return syslogFacility, nil
}
fInt, err := strconv.Atoi(facility)
if err == nil && 0 <= fInt && fInt <= 23 {
return syslog.Priority(fInt << 3), nil
}
return syslog.Priority(0), errors.New("invalid syslog facility")
}