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 {