middleware in golang

Golang : Creating a Logging Middleware for Your HTTP Server

Logging middleware is an essential part of any software system, as it provides visibility into the application's behavior and helps diagnose errors and performance issues. In a web application, logging can be particularly helpful to understand which endpoints are being called, what parameters are being passed, and how long requests take to complete. In this article, we will demonstrate how to create a logging middleware in Go that can be used to log incoming HTTP requests and responses. We will use a sample codebase to illustrate how the middleware can be integrated with an HTTP server.

This lecture demonstrates how to use middleware to log incoming HTTP requests in a Go server

The sample code provided imports the necessary packages for HTTP server creation, logging, and formatting. The reportLog function takes an http.HandlerFunc as input and returns a new http.HandlerFunc that logs the incoming request URL and then calls the original handler. The HelloHandler and HiHandler functions represent the HTTP handlers for the two endpoints that our server exposes.

package main
import (
var Revision string
type fctHandler http.HandlerFunc
func reportLog(f fctHandler) fctHandler {
	return func(w http.ResponseWriter, r *http.Request) {
		f(w, r)
func HelloHandler(w http.ResponseWriter, r *http.Request) {
	fmt.Fprintln(w, "Hello freecoders!")
func HiHandler(w http.ResponseWriter, r *http.Request) {
	fmt.Fprintln(w, "Hi freecoders!")
func main() {
	http.HandleFunc("/hi", reportLog(HiHandler))
	http.HandleFunc("/hello", reportLog(HelloHandler))
	log.Fatal(http.ListenAndServe(":8080", nil))

In the main function, we register the reportLog middleware for both endpoints using the http.HandleFunc method.

This means that every incoming request to either endpoint will be logged before being passed to the corresponding handler. Finally, we start the HTTP server using the http.ListenAndServe method, which listens on port 8080.

You can get this code source project and many others on our github account: https://github.com/freecoder-dev/go-middleware


Creating a logging middleware in Go can help you understand the behavior of your web application and diagnose potential issues. By using a middleware, you can keep your logging concerns separate from your application logic, making your code more modular and easier to maintain. In this article, we demonstrated how to create a simple logging middleware in Go that can be used to log incoming HTTP requests. By following the example code, you can implement this middleware in your own Go web application and gain valuable insights into its behavior.

Default image

I have been working as an embedded developer for over 15 years and I am very passionate about what I do.
My goal is to write good, clean code that is easy to maintain and extend. I believe that code should be well-tested, readable, and concise.

Articles: 19