From e90f167479505c4dbe1161306c3c977f162c1442 Mon Sep 17 00:00:00 2001 From: Gabor Tanz Date: Fri, 26 May 2023 15:53:30 +0200 Subject: [PATCH] allow logger to be specified in options (#148) --- cors.go | 3 +++ cors_test.go | 25 +++++++++++++++++++++++++ 2 files changed, 28 insertions(+) diff --git a/cors.go b/cors.go index 5669a67..77da585 100644 --- a/cors.go +++ b/cors.go @@ -73,6 +73,8 @@ type Options struct { OptionsSuccessStatus int // Debugging flag adds additional output to debug server side CORS issues Debug bool + // Adds a custom logger, implies Debug is true + Logger Logger } // Logger generic interface for logger @@ -120,6 +122,7 @@ func New(options Options) *Cors { allowPrivateNetwork: options.AllowPrivateNetwork, maxAge: options.MaxAge, optionPassthrough: options.OptionsPassthrough, + Log: options.Logger, } if options.Debug && c.Log == nil { c.Log = log.New(os.Stdout, "[cors] ", log.LstdFlags) diff --git a/cors_test.go b/cors_test.go index da16a29..00a600e 100644 --- a/cors_test.go +++ b/cors_test.go @@ -1,6 +1,8 @@ package cors import ( + "bytes" + "fmt" "net/http" "net/http/httptest" "regexp" @@ -505,6 +507,29 @@ func TestDebug(t *testing.T) { } } +type testLogger struct { + buf *bytes.Buffer +} + +func (l *testLogger) Printf(format string, v ...interface{}) { + fmt.Fprintf(l.buf, format, v...) +} + +func TestLogger(t *testing.T) { + logger := &testLogger{buf: &bytes.Buffer{}} + s := New(Options{ + Logger: logger, + }) + + if s.Log == nil { + t.Error("Logger not created when Logger is set") + } + s.logf("test") + if logger.buf.String() != "test" { + t.Error("Logger not used") + } +} + func TestDefault(t *testing.T) { s := Default() if s.Log != nil {