This can be made simpler.

```
if _, ok := w.(http.Hijacker); ok {
    logger = &hijackLogger{w: rw}
} else {
    logger = &responseLogger{w: rw}
}
```

Then you can get rid of the two interface definitions added below. The loggers can just embed http.ResponseWriter as before and you can do a conversion to `http.Hijacker` inside of Hijack.