@@ -25,6 +25,7 @@ import (
25
25
26
26
type RFC5424Hook struct {
27
27
syslog * syslog5424.Syslog
28
+ sender * syslog5424.Sender
28
29
msgID string
29
30
}
30
31
@@ -67,89 +68,26 @@ func NewRFC5424Hook(opts Target) (logrus.Hook, error) {
67
68
return nil , fmt .Errorf ("no address has been declared" )
68
69
}
69
70
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
136
75
}
137
76
138
- slConn , chErr , err := syslog5424 .Dial (opts .SyslogProto , opts .SyslogAddr )
77
+ slConn , _ , err := syslog5424 .Dial (opts .SyslogProto , opts .SyslogAddr )
139
78
if err != nil {
140
- fmt . Printf ( "error establishing syslog output: %s \n " , err )
79
+ return nil , err
141
80
}
142
81
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 )
150
83
if err != nil {
151
84
return nil , err
152
85
}
153
86
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
155
93
}
0 commit comments