@@ -25,6 +25,7 @@ import (
2525
2626type RFC5424Hook struct {
2727 syslog * syslog5424.Syslog
28+ sender * syslog5424.Sender
2829 msgID string
2930}
3031
@@ -67,89 +68,26 @@ func NewRFC5424Hook(opts Target) (logrus.Hook, error) {
6768 return nil , fmt .Errorf ("no address has been declared" )
6869 }
6970
70- var severity syslog5424.Priority
71- switch strings .ToLower (opts .SyslogLevel ) {
72- case "debug" :
73- severity = syslog5424 .LogDEBUG
74- case "info" :
75- severity = syslog5424 .LogINFO
76- case "notice" :
77- severity = syslog5424 .LogNOTICE
78- case "warning" :
79- severity = syslog5424 .LogWARNING
80- case "error" :
81- severity = syslog5424 .LogERR
82- case "critical" :
83- severity = syslog5424 .LogCRIT
84- case "alert" :
85- severity = syslog5424 .LogALERT
86- case "emergency" :
87- severity = syslog5424 .LogEMERG
88- default :
89- return nil , fmt .Errorf ("unrecognized severity: %s" , opts .SyslogLevel )
90- }
91-
92- var facility syslog5424.Priority
93- switch opts .SyslogFacility {
94- case "kern" :
95- facility = syslog5424 .LogKERN
96- case "user" :
97- facility = syslog5424 .LogUSER
98- case "mail" :
99- facility = syslog5424 .LogMAIL
100- case "daemon" :
101- facility = syslog5424 .LogDAEMON
102- case "auth" :
103- facility = syslog5424 .LogAUTH
104- case "syslog" :
105- facility = syslog5424 .LogSYSLOG
106- case "lpr" :
107- facility = syslog5424 .LogLPR
108- case "news" :
109- facility = syslog5424 .LogNEWS
110- case "uucp" :
111- facility = syslog5424 .LogUUCP
112- case "cron" :
113- facility = syslog5424 .LogCRON
114- case "authpriv" :
115- facility = syslog5424 .LogAUTHPRIV
116- case "ftp" :
117- facility = syslog5424 .LogFTP
118- case "local0" :
119- facility = syslog5424 .LogLOCAL0
120- case "local1" :
121- facility = syslog5424 .LogLOCAL1
122- case "local2" :
123- facility = syslog5424 .LogLOCAL2
124- case "local3" :
125- facility = syslog5424 .LogLOCAL3
126- case "local4" :
127- facility = syslog5424 .LogLOCAL4
128- case "local5" :
129- facility = syslog5424 .LogLOCAL5
130- case "local6" :
131- facility = syslog5424 .LogLOCAL6
132- case "local7" :
133- facility = syslog5424 .LogLOCAL7
134- default :
135- return nil , fmt .Errorf ("unrecognized facility: %s" , opts .SyslogFacility )
71+ priority := strings .Join ([]string {opts .SyslogFacility , opts .SyslogLevel }, "." )
72+ var priorityParsed syslog5424.Priority
73+ if err := priorityParsed .Set (priority ); err != nil {
74+ return nil , err
13675 }
13776
138- slConn , chErr , err := syslog5424 .Dial (opts .SyslogProto , opts .SyslogAddr )
77+ slConn , _ , err := syslog5424 .Dial (opts .SyslogProto , opts .SyslogAddr )
13978 if err != nil {
140- fmt . Printf ( "error establishing syslog output: %s \n " , err )
79+ return nil , err
14180 }
14281
143- go func (ch <- chan error ) {
144- for i := range ch {
145- fmt .Printf ("Error received from the syslog server: %s\n " , i .Error ())
146- }
147- }(chErr )
148-
149- syslogServer , err := syslog5424 .New (slConn , facility | severity , opts .SyslogTag )
82+ syslogServer , err := syslog5424 .New (slConn , priorityParsed , opts .SyslogTag )
15083 if err != nil {
15184 return nil , err
15285 }
15386
154- return & RFC5424Hook {syslog : syslogServer , msgID : opts .SyslogMsgID }, nil
87+ return & RFC5424Hook {syslog : syslogServer , sender : slConn , msgID : opts .SyslogMsgID }, nil
88+ }
89+
90+ func (r RFC5424Hook ) Close () error {
91+ r .sender .End ()
92+ return nil
15593}
0 commit comments