httplog

package
v1.53.0 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Aug 15, 2025 License: MIT Imports: 9 Imported by: 1

README

Package httplog

Пакет httplog предоставляет middleware для логирования HTTP-запросов и ответов. Поддерживает гибкую настройку: выбор типов контента для логирования тела, управление детализацией и интеграцию с буферизацией данных.

Functions

Log(logger log.Logger, logBody bool) endpoint.LogMiddleware

Создает middleware с базовыми настройками:

  • Логирует тело запроса/ответа, если logBody = true.
  • По умолчанию логирует только для application/json и text/xml.
LogWithOptions(logger log.Logger, opts ...Option) endpoint.LogMiddleware

Создает middleware с кастомными настройками через опции:

  • WithContentTypes(logBodyContentTypes []string) Option – Задает типы контента, для которых логируется тело (например, application/json).
  • WithLogBody(logBody bool) Option – Включает/отключает логирование тела запроса и ответа.
  • WithLogResponseBody(logResponseBody bool) Option – Включает/отключает логирование тела ответа.
  • WithLogRequestBody(logRequestBody bool) Option – Включает/отключает логирование тела запроса.

Usage

Default log middleware
package main

import (
	"log"

	"github.com/txix-open/isp-kit/http/endpoint"
	"github.com/txix-open/isp-kit/http/endpoint/httplog"
	log2 "github.com/txix-open/isp-kit/log"
)

func main() {
	logger, err := log2.New()
	if err != nil {
		log.Fatal(err)
	}

	/* create wrapper with default logging middleware */
	wrapper := endpoint.DefaultWrapper(logger, httplog.Log(logger, true))
}

Customize log middleware
package main

import (
	"log"

	"github.com/txix-open/isp-kit/http/endpoint"
	"github.com/txix-open/isp-kit/http/endpoint/httplog"
	log2 "github.com/txix-open/isp-kit/log"
)

func main() {
	logger, err := log2.New()
	if err != nil {
		log.Fatal(err)
	}

	/* create wrapper with custom logging middleware */
	wrapper := endpoint.DefaultWrapper(logger, httplog.LogWithOptions(
		logger,
		httplog.WithLogRequestBody(true),                         // enable logging request body
		httplog.WithLogResponseBody(false),                       // disable logging response body
		httplog.WithContentTypes([]string{"application/custom"}), // only for `application/custom` content-type
	))
}

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func Log

func Log(logger log.Logger, logBody bool) endpoint.LogMiddleware

func LogWithOptions

func LogWithOptions(logger log.Logger, opts ...Option) endpoint.LogMiddleware

func Noop

func Noop() endpoint.LogMiddleware

Types

type Option

type Option func(cfg *logConfig)

func WithContentTypes

func WithContentTypes(logBodyContentTypes []string) Option

func WithLogBody

func WithLogBody(logBody bool) Option

Shortcut for logResponseBody and logRequestBody

func WithLogRequestBody

func WithLogRequestBody(logRequestBody bool) Option

func WithLogResponseBody

func WithLogResponseBody(logResponseBody bool) Option

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL