gojiはgolangのWebApplicationFrameworkです。 gojiにはMiddlewareという仕組みがあり、これを使うことで、リクエストごとに共通して必要な処理を集約することができます。 gojiはリクエストのロギングを行うMiddlewareが用意されているので、それを参考に見ていきます。 func Logger(c *web.C, h http.Handler) http.Handler { fn := func(w http.ResponseWriter, r *http.Request) { reqID := GetReqID(*c) printStart(reqID, r) lw := mutil.WrapWriter(w) t1 := time.Now() h.ServeHTTP(lw, r) if lw.Status() == 0 { lw.WriteH
![gojiのMiddlewareの使い方 - Qiita](https://cdn-ak-scissors.b.st-hatena.com/image/square/2859d9c822c7373f62e88b1d923f1562c1547c26/height=288;version=1;width=512/https%3A%2F%2Fqiita-user-contents.imgix.net%2Fhttps%253A%252F%252Fcdn.qiita.com%252Fassets%252Fpublic%252Farticle-ogp-background-412672c5f0600ab9a64263b751f1bc81.png%3Fixlib%3Drb-4.0.0%26w%3D1200%26mark64%3DaHR0cHM6Ly9xaWl0YS11c2VyLWNvbnRlbnRzLmltZ2l4Lm5ldC9-dGV4dD9peGxpYj1yYi00LjAuMCZ3PTk3MiZoPTM3OCZ0eHQ9Z29qaSVFMyU4MSVBRU1pZGRsZXdhcmUlRTMlODElQUUlRTQlQkQlQkYlRTMlODElODQlRTYlOTYlQjkmdHh0LWFsaWduPWxlZnQlMkN0b3AmdHh0LWNvbG9yPSUyMzIxMjEyMSZ0eHQtZm9udD1IaXJhZ2lubyUyMFNhbnMlMjBXNiZ0eHQtc2l6ZT01NiZzPWM2M2Y1MzI0MmYxNzI5NzMxMDQ0NzU4NTRhZWVlMzgy%26mark-x%3D142%26mark-y%3D57%26blend64%3DaHR0cHM6Ly9xaWl0YS11c2VyLWNvbnRlbnRzLmltZ2l4Lm5ldC9-dGV4dD9peGxpYj1yYi00LjAuMCZoPTc2Jnc9NzcwJnR4dD0lNDByZWlraTQwNDAmdHh0LWNvbG9yPSUyMzIxMjEyMSZ0eHQtZm9udD1IaXJhZ2lubyUyMFNhbnMlMjBXNiZ0eHQtc2l6ZT0zNiZ0eHQtYWxpZ249bGVmdCUyQ3RvcCZzPTFiNTAzODU2OWI0NWZmZjMzMDAwM2UzZjBhZWIwNzgz%26blend-x%3D142%26blend-y%3D486%26blend-mode%3Dnormal%26s%3D1bc565e86fd16d8d0e2f544271dcb320)