@@ -17,23 +17,20 @@ package main
17
17
18
18
import (
19
19
"fmt"
20
- "io/ioutil"
21
20
"os"
22
21
"path"
23
- "path/filepath"
24
22
"syscall"
25
23
26
24
loads "github.com/go-openapi/loads"
27
25
"github.com/go-openapi/runtime"
28
26
"github.com/go-openapi/runtime/security"
29
27
flags "github.com/jessevdk/go-flags"
30
- log "github.com/sirupsen/logrus"
31
28
32
29
"github.com/haproxytech/client-native/v2/storage"
33
30
"github.com/haproxytech/dataplaneapi"
34
31
"github.com/haproxytech/dataplaneapi/configuration"
32
+ "github.com/haproxytech/dataplaneapi/log"
35
33
"github.com/haproxytech/dataplaneapi/operations"
36
- "github.com/haproxytech/dataplaneapi/syslog"
37
34
)
38
35
39
36
// GitRepo ...
@@ -51,14 +48,6 @@ var GitDirty = ".dirty"
51
48
// BuildTime ...
52
49
var BuildTime = ""
53
50
54
- func init () {
55
- log .SetFormatter (& log.TextFormatter {
56
- FullTimestamp : true ,
57
- DisableColors : true ,
58
- })
59
- log .SetOutput (os .Stdout )
60
- }
61
-
62
51
var cliOptions struct {
63
52
Version bool `short:"v" long:"version" description:"Version and build information"`
64
53
}
@@ -76,7 +65,8 @@ func main() {
76
65
func startServer (cfg * configuration.Configuration ) (reload configuration.AtomicBool ) {
77
66
swaggerSpec , err := loads .Embedded (dataplaneapi .SwaggerJSON , dataplaneapi .FlatSwaggerJSON )
78
67
if err != nil {
79
- log .Fatalln (err )
68
+ fmt .Println (err )
69
+ os .Exit (1 )
80
70
}
81
71
82
72
dataplaneapi .BuildTime = BuildTime
@@ -93,21 +83,24 @@ func startServer(cfg *configuration.Configuration) (reload configuration.AtomicB
93
83
for _ , optsGroup := range api .CommandLineOptionsGroups {
94
84
_ , err = parser .AddGroup (optsGroup .ShortDescription , optsGroup .LongDescription , optsGroup .Options )
95
85
if err != nil {
96
- log .Fatalln (err )
86
+ fmt .Println (err )
87
+ os .Exit (1 )
97
88
}
98
89
}
99
90
100
91
_ , err = parser .AddGroup ("Show version" , "Show build and version information" , & cliOptions )
101
92
if err != nil {
102
- log .Fatalln (err )
93
+ fmt .Println (err )
94
+ os .Exit (1 )
103
95
}
104
96
105
97
if _ , err = parser .Parse (); err != nil {
106
98
if fe , ok := err .(* flags.Error ); ok {
107
99
if fe .Type == flags .ErrHelp {
108
100
os .Exit (0 )
109
101
} else {
110
- log .Fatalln (err )
102
+ fmt .Println (err )
103
+ os .Exit (1 )
111
104
}
112
105
}
113
106
}
@@ -121,26 +114,30 @@ func startServer(cfg *configuration.Configuration) (reload configuration.AtomicB
121
114
122
115
err = cfg .Load ()
123
116
if err != nil {
124
- log .Fatalln (err )
117
+ fmt .Println (err )
118
+ os .Exit (1 )
125
119
}
126
120
127
121
if cfg .HAProxy .UID != 0 {
128
122
if err = syscall .Setuid (cfg .HAProxy .UID ); err != nil {
129
- log .Fatalln ("set uid:" , err )
123
+ fmt .Println ("set uid:" , err )
124
+ os .Exit (1 )
130
125
}
131
126
}
132
127
133
128
if cfg .HAProxy .GID != 0 {
134
129
if err = syscall .Setgid (cfg .HAProxy .GID ); err != nil {
135
- log .Fatalln ("set gid:" , err )
130
+ fmt .Println ("set gid:" , err )
131
+ os .Exit (1 )
136
132
}
137
133
}
138
134
139
135
// incorporate changes from file to global settings
140
136
dataplaneapi .SyncWithFileSettings (server , cfg )
141
137
err = cfg .LoadRuntimeVars (dataplaneapi .SwaggerJSON , server .Host , server .Port )
142
138
if err != nil {
143
- log .Fatalln (err )
139
+ fmt .Println (err )
140
+ os .Exit (1 )
144
141
}
145
142
146
143
configuration .HandlePIDFile (cfg .HAProxy )
@@ -172,15 +169,18 @@ func startServer(cfg *configuration.Configuration) (reload configuration.AtomicB
172
169
}
173
170
}
174
171
175
- setupLogging (cfg )
172
+ if err = log .InitWithConfiguration (cfg .LogTargets , cfg .Logging , cfg .Syslog ); err != nil {
173
+ fmt .Println (err )
174
+ os .Exit (1 )
175
+ }
176
176
177
177
log .Infof ("HAProxy Data Plane API %s %s%s" , GitTag , GitCommit , GitDirty )
178
178
log .Infof ("Build from: %s" , GitRepo )
179
179
log .Infof ("Build date: %s" , BuildTime )
180
180
181
181
err = cfg .Save ()
182
182
if err != nil {
183
- log .Fatalln ( err )
183
+ log .Fatalf ( "Error saving configuration: %s" , err . Error () )
184
184
}
185
185
186
186
// Applies when the Authorization header is set with the Basic scheme
@@ -204,7 +204,7 @@ func startServer(cfg *configuration.Configuration) (reload configuration.AtomicB
204
204
dataplaneapi .ContextHandler .Cancel ()
205
205
err := server .Shutdown ()
206
206
if err != nil {
207
- log .Fatalln ( err )
207
+ log .Fatalf ( "Error reloading HAProxy Data Plane API: %s" , err . Error () )
208
208
}
209
209
}()
210
210
@@ -214,7 +214,7 @@ func startServer(cfg *configuration.Configuration) (reload configuration.AtomicB
214
214
log .Info ("HAProxy Data Plane API shutting down" )
215
215
err := server .Shutdown ()
216
216
if err != nil {
217
- log .Fatalln ( err )
217
+ log .Fatalf ( "Error shutting down HAProxy Data Plane API: %s" , err . Error () )
218
218
}
219
219
os .Exit (0 )
220
220
case <- dataplaneapi .ContextHandler .Context ().Done ():
@@ -224,74 +224,10 @@ func startServer(cfg *configuration.Configuration) (reload configuration.AtomicB
224
224
225
225
server .ConfigureAPI ()
226
226
if err := server .Serve (); err != nil {
227
- log .Fatalln ( err )
227
+ log .Fatalf ( "Error running HAProxy Data Plane API: %s" , err . Error () )
228
228
}
229
229
230
230
defer server .Shutdown () // nolint:errcheck
231
231
232
232
return reload
233
233
}
234
-
235
- func setupLogging (cfg * configuration.Configuration ) {
236
- appLogger := log .StandardLogger ()
237
- configureLogger (appLogger , cfg .Logging , func (opts configuration.SyslogOptions ) configuration.SyslogOptions {
238
- opts .SyslogMsgID = "app"
239
- return opts
240
- }(cfg .Syslog ))
241
-
242
- accLogger := log .StandardLogger ()
243
- configureLogger (accLogger , cfg .Logging , func (opts configuration.SyslogOptions ) configuration.SyslogOptions {
244
- opts .SyslogMsgID = "accesslog"
245
- return opts
246
- }(cfg .Syslog ))
247
-
248
- dataplaneapi .AppLogger = appLogger
249
- dataplaneapi .AccLogger = accLogger
250
- }
251
-
252
- func configureLogger (logger * log.Logger , loggingOptions configuration.LoggingOptions , syslogOptions configuration.SyslogOptions ) {
253
- switch loggingOptions .LogFormat {
254
- case "text" :
255
- logger .SetFormatter (& log.TextFormatter {
256
- FullTimestamp : true ,
257
- DisableColors : true ,
258
- })
259
- case "JSON" :
260
- logger .SetFormatter (& log.JSONFormatter {})
261
- }
262
-
263
- switch loggingOptions .LogTo {
264
- case "stdout" :
265
- logger .SetOutput (os .Stdout )
266
- case "file" :
267
- dir := filepath .Dir (loggingOptions .LogFile )
268
- if err := os .MkdirAll (dir , os .ModePerm ); err != nil {
269
- log .Warning ("Error opening log file, no logging implemented: " + err .Error ())
270
- }
271
- //nolint:govet
272
- logFile , err := os .OpenFile (loggingOptions .LogFile , os .O_APPEND | os .O_CREATE | os .O_RDWR , 0666 )
273
- if err != nil {
274
- log .Warning ("Error opening log file, no logging implemented: " + err .Error ())
275
- }
276
- log .SetOutput (logFile )
277
- case "syslog" :
278
- logger .SetOutput (ioutil .Discard )
279
- hook , err := syslog .NewRFC5424Hook (syslogOptions )
280
- if err != nil {
281
- log .Warningf ("Error configuring Syslog logging: %s" , err .Error ())
282
- break
283
- }
284
- logger .AddHook (hook )
285
- }
286
-
287
- switch loggingOptions .LogLevel {
288
- case "debug" :
289
- logger .SetLevel (log .DebugLevel )
290
- case "info" :
291
- logger .SetLevel (log .InfoLevel )
292
- case "warning" :
293
- logger .SetLevel (log .WarnLevel )
294
- case "error" :
295
- logger .SetLevel (log .ErrorLevel )
296
- }
297
- }
0 commit comments