/
syslog_names.go
92 lines (79 loc) · 2.06 KB
/
syslog_names.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
package main
import (
"errors"
"log/syslog"
)
var errInvalidLevel = errors.New("invalid log level")
var errInvalidFacility = errors.New("invalid log facility")
var facilityStrings = map[syslog.Priority]string{
syslog.LOG_KERN: "kern",
syslog.LOG_USER: "user",
syslog.LOG_MAIL: "mail",
syslog.LOG_DAEMON: "daemon",
syslog.LOG_AUTH: "auth",
syslog.LOG_SYSLOG: "syslog",
syslog.LOG_LPR: "lpr",
syslog.LOG_NEWS: "news",
syslog.LOG_UUCP: "uucp",
syslog.LOG_CRON: "cron",
syslog.LOG_AUTHPRIV: "authpriv",
syslog.LOG_FTP: "ftp",
syslog.LOG_LOCAL0: "local0",
syslog.LOG_LOCAL1: "local1",
syslog.LOG_LOCAL2: "local2",
syslog.LOG_LOCAL3: "local3",
syslog.LOG_LOCAL4: "local4",
syslog.LOG_LOCAL5: "local5",
syslog.LOG_LOCAL6: "local6",
syslog.LOG_LOCAL7: "local7",
}
var facilityByName = reverseFacilityMap(facilityStrings)
func reverseFacilityMap(m map[syslog.Priority]string) map[string]syslog.Priority {
rv := map[string]syslog.Priority{}
for k, v := range m {
rv[v] = k
}
return rv
}
var levelStrings = map[syslog.Priority]string{
syslog.LOG_EMERG: "emerg",
syslog.LOG_ALERT: "alert",
syslog.LOG_CRIT: "crit",
syslog.LOG_ERR: "err",
syslog.LOG_WARNING: "warning",
syslog.LOG_NOTICE: "notice",
syslog.LOG_INFO: "info",
syslog.LOG_DEBUG: "debug",
}
var levelByName = reversePriorityMap(levelStrings)
func reversePriorityMap(m map[syslog.Priority]string) map[string]syslog.Priority {
rv := map[string]syslog.Priority{}
for k, v := range m {
rv[v] = k
}
return rv
}
type logLevel syslog.Priority
type logFacility syslog.Priority
func (l logFacility) String() string {
return facilityStrings[syslog.Priority(l)&^7]
}
func (l *logFacility) Set(to string) error {
v, ok := facilityByName[to]
if !ok {
return errInvalidFacility
}
*l = logFacility(v)
return nil
}
func (l logLevel) String() string {
return levelStrings[syslog.Priority(l)&7]
}
func (l *logLevel) Set(to string) error {
v, ok := levelByName[to]
if !ok {
return errInvalidLevel
}
*l = logLevel(v)
return nil
}