server

package module
v0.13.0 Latest Latest
Warning

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

Go to latest
Published: Apr 8, 2024 License: Apache-2.0 Imports: 16 Imported by: 1

README

go-kit/server

Go Reference GitHub Release GoCard GitHub license

Требования

  • поля со значениями, а не строки
  • в числе полей есть имя файла и номер строки
  • в проде поля пишутся в json
  • при отладке в консоли - читаемый вывод
  • для тестов вывод пишется в буфер и его можно анализировать
  • ?? возможность влючить отладку заданного пакета

Почему github.com/go-logr/logr ?

Автор приложения, использующего ваш пакет, по разным причинам может выбрать одну из многих систем журналирования. Я предпочитаю вариант, при котором этот выбор не ограничивается моим пакетом. Т.е. мои пакеты для журналирования используют внешний интерфейс, а выбор пакета журналирования я оставляю за автором приложения.

Зачем log.V(X).Info?

По сравнению с вариантом log.Debug() и log.Warn(). использование переменной позволяет изменять уровень журналирования пакета при старте программы или в процессе ее работы.

В частности, если число для отладки (1) положить в переменную DL и для журналирования использовать log.V(DL).Info, то при отладке всего приложения можно выключить журналирование неактуального пакета инструкцией вида pkg.DL = 9.

TODO

примеры (narra? webtail?)

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

This section is empty.

Types

type Config

type Config struct {
	Listen string `long:"listen" default:":8080" description:"Addr and port which server listens at"`

	MaxHeaderBytes int           `long:"maxheader" description:"MaxHeaderBytes"`
	ReadTimeout    time.Duration `long:"rto" default:"10s" description:"HTTP read timeout"`
	WriteTimeout   time.Duration `long:"wto" default:"60s" description:"HTTP write timeout"`
	GracePeriod    time.Duration `long:"grace" default:"10s" description:"Stop grace period"`

	IPHeader   string `long:"ip_header" env:"IP_HEADER" default:"X-Real-IP" description:"HTTP Request Header for remote IP"`
	UserHeader string `long:"user_header" env:"USER_HEADER" default:"X-Username" description:"HTTP Request Header for username"`

	TLS     TLSConfig             `group:"HTTPS Options"            namespace:"tls"  env-namespace:"TLS"`
	Version VersionResponseConfig `group:"Version response Options" namespace:"vr"`
}

Config holds all config vars.

func (Config) WithAccessLog

func (cfg Config) WithAccessLog(handler http.Handler) http.Handler

WithAccessLog calculates estimate and prints HTTP request log.

func (Config) WithETag

func (cfg Config) WithETag(handler http.Handler) http.Handler

WithETag adds ETAG to response.

type Handler

type Handler func(http.Handler) http.Handler

Handler is a http midleware handler.

type Service

type Service struct {
	// contains filtered or unexported fields
}

Service holds service attributes.

func New

func New(cfg Config) *Service

New returns *Service.

func (Service) Run

func (srv Service) Run(ctxParent context.Context, workers ...Worker) error

Run runs the service.

func (Service) ServeMux

func (srv Service) ServeMux() *http.ServeMux

ServeMux returns service muxer.

func (*Service) Use

func (srv *Service) Use(handler Handler) *Service

Use adds handler for muxer.

func (*Service) WithListener

func (srv *Service) WithListener(listener net.Listener) *Service

WithListener sets service listener.

func (*Service) WithShutdown

func (srv *Service) WithShutdown(worker Worker) *Service

WithShutdown registers worker for call on shutdown.

func (*Service) WithStatic

func (srv *Service) WithStatic(fSystem fs.FS) *Service

WithStatic sets static filesystem for serve via http.

func (*Service) WithVersion

func (srv *Service) WithVersion(version string) *Service

WithVersion sets hanler returning source code version as js.

type TLSConfig added in v0.13.0

type TLSConfig struct {
	CertFile           string `long:"cert" description:"CertFile for serving HTTPS instead HTTP" env:"CERT" `
	KeyFile            string `long:"key"  description:"KeyFile for serving HTTPS instead HTTP" env:"KEY" `
	NoCheckCertificate bool   `long:"no-check" description:"disable tls certificate validation"`
}

TLSConfig holds TLS config options

type VersionResponseConfig added in v0.13.0

type VersionResponseConfig struct {
	Prefix string `long:"prefix" default:"/js/version.js" description:"URL for version response"`
	Format string `` /* 161-byte string literal not displayed */
	CType  string `long:"ctype"  default:"text/javascript" description:"js code Content-Type header"`
}

VersionResponseConfig

type Worker

type Worker func(ctx context.Context) error

Worker is a server goroutene worker.

Jump to

Keyboard shortcuts

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