Go 언어로 웹 애플리케이션을 개발할 때, 로깅 처리는 매우 중요합니다. net/http 패키지를 사용하여 HTTP 요청과 응답에 대한 로깅을 쉽게 처리할 수 있습니다. 이 포스트에서는 net/http 패키지를 사용하여 로깅을 구현하는 방법을 살펴보겠습니다.
net/http 패키지 소개
net/http 패키지는 Go 언어에서 HTTP 웹 서버 및 클라이언트를 구현하기 위한 핵심 패키지입니다. 이 패키지를 사용하면 간단한 웹 서버를 만들거나 HTTP 클라이언트를 구현할 수 있습니다.
요청 로깅
먼저 HTTP 요청에 대한 로깅을 구현해보겠습니다. 아래의 코드는 요청이 들어왔을 때 요청 URL과 메소드를 로그에 출력하는 예제입니다.
package main
import (
"fmt"
"log"
"net/http"
)
func loggingMiddleware(next http.Handler) http.Handler {
return http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
log.Printf("Request URL: %s, Method: %s", r.URL, r.Method)
next.ServeHTTP(w, r)
})
}
func main() {
http.Handle("/", loggingMiddleware(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
fmt.Fprintf(w, "Hello, World!")
})))
http.ListenAndServe(":8080", nil)
}
위의 예제에서 loggingMiddleware
함수는 http.Handler
를 반환하며, 이는 요청에 대한 로까을 처리하는 역할을 합니다.
응답 로깅
이어서 HTTP 응답에 대한 로깅을 구현해보겠습니다. 아래의 코드는 응답이 완료되었을 때 상태 코드를 로그에 출력하는 예제입니다.
func loggingMiddleware(next http.Handler) http.Handler {
return http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
next.ServeHTTP(w, r)
log.Printf("Response Status: %d", w.(interface{ Status() int }).Status())
})
}
위의 예제에서는 ResponseWriter
의 Status()
메소드를 사용하여 응답 상태 코드를 가져와 로그에 출력하고 있습니다.
결론
net/http 패키지를 사용하면 HTTP 요청과 응답에 대한 로깅을 간단히 처리할 수 있습니다. 위의 예제 코드를 참고하여 웹 애플리케이션에서 로깅을 구현해보세요. 로깅을 통해 애플리케이션의 동작을 모니터링하고 디버깅하는 데 도움이 될 것입니다.
참고 자료
이상으로 net/http 패키지를 사용한 로깅 처리에 대해 알아보았습니다. 추가적인 질문이 있으시면 언제든지 물어봐주세요.