/
syslog.go
54 lines (48 loc) · 1.34 KB
/
syslog.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
package log
import (
"fmt"
"log/syslog"
)
type SyslogLogger struct {
writer *syslog.Writer
}
func (p *SyslogLogger) Debug(format string, args ...interface{}) {
p.writer.Debug(fmt.Sprintf(format, args...))
}
func (p *SyslogLogger) Error(format string, args ...interface{}) {
p.writer.Err(fmt.Sprintf(format, args...))
}
func (p *SyslogLogger) Info(format string, args ...interface{}) {
p.writer.Info(fmt.Sprintf(format, args...))
}
func (p *SyslogLogger) Warning(format string, args ...interface{}) {
p.writer.Warning(fmt.Sprintf(format, args...))
}
func (p *SyslogLogger) Notice(format string, args ...interface{}) {
p.writer.Notice(fmt.Sprintf(format, args...))
}
func syslogPriority(priority Priority) syslog.Priority {
switch priority {
case INFO:
return syslog.LOG_INFO
case WARNING:
return syslog.LOG_WARNING
case ERROR:
return syslog.LOG_ERR
}
return syslog.LOG_DEBUG
}
func NewSyslogLogger(tag string, priority Priority) (Logger, error) {
if wrt, err := syslog.New(syslogPriority(priority), tag); err == nil {
return &SyslogLogger{writer: wrt}, nil
} else {
return nil, err
}
}
func DialSyslogLogger(network, address, tag string, priority Priority) (Logger, error) {
if wrt, err := syslog.Dial(network, address, syslogPriority(priority), tag); err == nil {
return &SyslogLogger{writer: wrt}, nil
} else {
return nil, err
}
}