mirror of https://github.com/misterzym/jdocset.git
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
55 lines
1.5 KiB
55 lines
1.5 KiB
// +build !windows,!plan9 |
|
|
|
package log15 |
|
|
|
import ( |
|
"log/syslog" |
|
"strings" |
|
) |
|
|
|
// SyslogHandler opens a connection to the system syslog daemon by calling |
|
// syslog.New and writes all records to it. |
|
func SyslogHandler(priority syslog.Priority, tag string, fmtr Format) (Handler, error) { |
|
wr, err := syslog.New(priority, tag) |
|
return sharedSyslog(fmtr, wr, err) |
|
} |
|
|
|
// SyslogNetHandler opens a connection to a log daemon over the network and writes |
|
// all log records to it. |
|
func SyslogNetHandler(net, addr string, priority syslog.Priority, tag string, fmtr Format) (Handler, error) { |
|
wr, err := syslog.Dial(net, addr, priority, tag) |
|
return sharedSyslog(fmtr, wr, err) |
|
} |
|
|
|
func sharedSyslog(fmtr Format, sysWr *syslog.Writer, err error) (Handler, error) { |
|
if err != nil { |
|
return nil, err |
|
} |
|
h := FuncHandler(func(r *Record) error { |
|
var syslogFn = sysWr.Info |
|
switch r.Lvl { |
|
case LvlCrit: |
|
syslogFn = sysWr.Crit |
|
case LvlError: |
|
syslogFn = sysWr.Err |
|
case LvlWarn: |
|
syslogFn = sysWr.Warning |
|
case LvlInfo: |
|
syslogFn = sysWr.Info |
|
case LvlDebug: |
|
syslogFn = sysWr.Debug |
|
} |
|
|
|
s := strings.TrimSpace(string(fmtr.Format(r))) |
|
return syslogFn(s) |
|
}) |
|
return LazyHandler(&closingHandler{sysWr, h}), nil |
|
} |
|
|
|
func (m muster) SyslogHandler(priority syslog.Priority, tag string, fmtr Format) Handler { |
|
return must(SyslogHandler(priority, tag, fmtr)) |
|
} |
|
|
|
func (m muster) SyslogNetHandler(net, addr string, priority syslog.Priority, tag string, fmtr Format) Handler { |
|
return must(SyslogNetHandler(net, addr, priority, tag, fmtr)) |
|
}
|
|
|