// Serve serves the middleware func (l *LoggerMiddleware) Serve(ctx *iris.Context) { //all except latency to string var date, status, ip, method, path string var latency time.Duration var startTime, endTime time.Time status = strconv.Itoa(ctx.Response.StatusCode()) ip = ctx.RemoteAddr() path = ctx.PathString() method = ctx.MethodString() startTime = time.Now() ctx.Next() //no time.Since in order to format it well after endTime = time.Now() date = endTime.Format("01/02 - 15:04:05") latency = endTime.Sub(startTime) //finally print the logs l.printf("%s %v %4v %s %s %s", date, status, latency, ip, method, path) }