~juju-qa/ubuntu/xenial/juju/xenial-2.0-beta3

« back to all changes in this revision

Viewing changes to src/gopkg.in/inconshreveable/log15.v2/syslog.go

  • Committer: Martin Packman
  • Date: 2016-03-30 19:31:08 UTC
  • mfrom: (1.1.41)
  • Revision ID: martin.packman@canonical.com-20160330193108-h9iz3ak334uk0z5r
Merge new upstream source 2.0~beta3

Show diffs side-by-side

added added

removed removed

Lines of Context:
1
 
// +build !windows,!plan9
2
 
 
3
 
package log15
4
 
 
5
 
import (
6
 
        "log/syslog"
7
 
        "strings"
8
 
)
9
 
 
10
 
// SyslogHandler opens a connection to the system syslog daemon by calling
11
 
// syslog.New and writes all records to it.
12
 
func SyslogHandler(tag string, fmtr Format) (Handler, error) {
13
 
        wr, err := syslog.New(syslog.LOG_INFO, tag)
14
 
        return sharedSyslog(fmtr, wr, err)
15
 
}
16
 
 
17
 
// SyslogHandler opens a connection to a log daemon over the network and writes
18
 
// all log records to it.
19
 
func SyslogNetHandler(net, addr string, tag string, fmtr Format) (Handler, error) {
20
 
        wr, err := syslog.Dial(net, addr, syslog.LOG_INFO, tag)
21
 
        return sharedSyslog(fmtr, wr, err)
22
 
}
23
 
 
24
 
func sharedSyslog(fmtr Format, sysWr *syslog.Writer, err error) (Handler, error) {
25
 
        if err != nil {
26
 
                return nil, err
27
 
        }
28
 
        h := FuncHandler(func(r *Record) error {
29
 
                var syslogFn = sysWr.Info
30
 
                switch r.Lvl {
31
 
                case LvlCrit:
32
 
                        syslogFn = sysWr.Crit
33
 
                case LvlError:
34
 
                        syslogFn = sysWr.Err
35
 
                case LvlWarn:
36
 
                        syslogFn = sysWr.Warning
37
 
                case LvlInfo:
38
 
                        syslogFn = sysWr.Info
39
 
                case LvlDebug:
40
 
                        syslogFn = sysWr.Debug
41
 
                }
42
 
 
43
 
                s := strings.TrimSpace(string(fmtr.Format(r)))
44
 
                return syslogFn(s)
45
 
        })
46
 
        return LazyHandler(&closingHandler{sysWr, h}), nil
47
 
}
48
 
 
49
 
func (m muster) SyslogHandler(tag string, fmtr Format) Handler {
50
 
        return must(SyslogHandler(tag, fmtr))
51
 
}
52
 
 
53
 
func (m muster) SyslogNetHandler(net, addr string, tag string, fmtr Format) Handler {
54
 
        return must(SyslogNetHandler(net, addr, tag, fmtr))
55
 
}