diff --git a/server/server.go b/server/server.go index 7af26cd..76e88ee 100644 --- a/server/server.go +++ b/server/server.go @@ -5,6 +5,7 @@ import ( "crypto" "crypto/tls" "crypto/x509" + "errors" "fmt" "log" "net" @@ -46,18 +47,15 @@ type ListenOpts struct { func ListenAndServe(ctx context.Context, httpsPort, httpPort int, handler http.Handler, opts *ListenOpts) error { logger := logrus.StandardLogger() writer := logger.WriterLevel(logrus.DebugLevel) + if opts == nil { + opts = &ListenOpts{} + } if opts.DisplayServerLogs { writer = logger.WriterLevel(logrus.ErrorLevel) } // Otherwise preserve legacy behaviour of displaying server logs only in debug mode. - errorLog := log.New(writer, "", log.LstdFlags) - return listenAndServeWithLogger(ctx, httpsPort, httpPort, handler, opts, errorLog) -} -func listenAndServeWithLogger(ctx context.Context, httpsPort, httpPort int, handler http.Handler, opts *ListenOpts, errorLog *log.Logger) error { - if opts == nil { - opts = &ListenOpts{} - } + errorLog := log.New(writer, "", log.LstdFlags) if opts.TLSListenerConfig.TLSConfig == nil { opts.TLSListenerConfig.TLSConfig = &tls.Config{} @@ -89,7 +87,7 @@ func listenAndServeWithLogger(ctx context.Context, httpsPort, httpPort int, hand go func() { logrus.Infof("Listening on %s:%d", opts.BindHost, httpsPort) err := tlsServer.Serve(tlsTCPListener) - if err != http.ErrServerClosed && err != nil { + if !errors.Is(err, http.ErrServerClosed) && err != nil { logrus.Fatalf("https server failed: %v", err) } }() @@ -111,7 +109,7 @@ func listenAndServeWithLogger(ctx context.Context, httpsPort, httpPort int, hand go func() { logrus.Infof("Listening on %s:%d", opts.BindHost, httpPort) err := httpServer.ListenAndServe() - if err != http.ErrServerClosed && err != nil { + if !errors.Is(err, http.ErrServerClosed) && err != nil { logrus.Fatalf("http server failed: %v", err) } }() diff --git a/server/server_test.go b/server/server_test.go index 915ecb2..28a17b1 100644 --- a/server/server_test.go +++ b/server/server_test.go @@ -4,7 +4,6 @@ import ( "bytes" "context" "fmt" - "log" "net" "net/http" "sync" @@ -86,15 +85,11 @@ func doRequest(safeWriter *safeWriter, message string, logLevel logrus.Level) er handler := alwaysPanicHandler{msg: msg} listenOpts := &ListenOpts{ BindHost: host, + DisplayServerLogs: logLevel == logrus.ErrorLevel, } - logger := logrus.StandardLogger() - logger.SetOutput(safeWriter) - logger.SetLevel(logrus.ErrorLevel) - writer := logger.WriterLevel(logLevel) - errorLog := log.New(writer, "", log.LstdFlags) - - if err := listenAndServeWithLogger(ctx, httpsPort, httpPort, &handler, listenOpts, errorLog); err != nil { + logrus.StandardLogger().SetOutput(safeWriter) + if err := ListenAndServe(ctx, httpsPort, httpPort, &handler, listenOpts); err != nil { return err } addr := fmt.Sprintf("%s:%d", host, httpPort)