Skip to content

accesslog

HTTP access logging interface for recording request and response details.

Overview

The accesslog package defines an interface for logging HTTP request and response information. This abstraction allows different logging implementations (e.g., JSON logging, file logging, stdout logging) to be plugged into the reverse proxy and other HTTP handlers.

Architecture

Core Components

The AccessLogger interface provides three methods:

  • Log: Called after a successful request/response cycle to log the request and response
  • LogError: Called when an error occurs during request processing
  • Close: Called to clean up resources when the logger is no longer needed

API Reference

AccessLogger Interface

go
type AccessLogger interface {
    Log(req *http.Request, res *http.Response)
    LogError(req *http.Request, err error)
    Close() error
}

Usage Example

go
package main

import (
    "net/http"
    "github.com/yusing/goutils/http/accesslog"
)

// CustomAccessLogger implements accesslog.AccessLogger
type CustomAccessLogger struct {
    // implementation details
}

func (l *CustomAccessLogger) Log(req *http.Request, res *http.Response) {
    // Log successful request
}

func (l *CustomAccessLogger) LogError(req *http.Request, err error) {
    // Log error
}

func (l *CustomAccessLogger) Close() error {
    // Cleanup
}

// Usage in reverse proxy
func setupProxy() *reverseproxy.ReverseProxy {
    logger := &CustomAccessLogger{}
    return reverseproxy.NewReverseProxy("my-proxy", targetURL, transport,
        reverseproxy.WithAccessLogger(logger))
}

Integration Points

This package is used by:

  • goutils/http/reverseproxy - The reverse proxy logs requests and errors through this interface

Released under the MIT License.