logging

package
v0.27.0 Latest Latest
Warning

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

Go to latest
Published: Mar 22, 2022 License: MIT Imports: 13 Imported by: 1

Documentation

Index

Constants

This section is empty.

Variables

AllLevelEnums lists all 5 values in order.

AllLevels lists all 5 values in order.

View Source
var ItemFileName = func(item *LogItem) string {
	return fmt.Sprintf("%s_%s_%s%s",
		file.FilenameTimestamp(item.Start),
		item.Method,
		file.Hostname(item.Request.Header),
		file.UrlToFilename(item.URL.Path))
}

ItemFileName builds a filename that distinctively represents the request that raised the LogItem.

This is pluggable with alternative implementations. The default implementation concatenates the timestamp, the method, the hostname, and the URL. No extension is added -

View Source
var Now = func() time.Time {
	return time.Now().UTC()
}

Now provides the current time. It can be stubbed for testing.

Functions

This section is empty.

Types

type Filter added in v0.3.0

type Filter interface {
	Level(*http.Request) Level
}

A Filter determines the logging level, possibly based on each request.

type FilterFunc added in v0.3.0

type FilterFunc func(*http.Request) Level

FilterFunc adapts a function to be a Filter.

func FixedLevel added in v0.3.0

func FixedLevel(level Level) FilterFunc

FixedLevel is a FilterFunc that always return a specified Level.

func (FilterFunc) Level added in v0.3.0

func (f FilterFunc) Level(req *http.Request) Level

type Level

type Level int

Level allows control of the predicate of detail in log messages.

const (
	// Off turns logging off.
	Off Level = iota

	// Discrete log messages contain only a summary of the request and response.
	// No query parameters are printed in order to hide potential personal information.
	Discrete

	// Summary log messages contain only a summary of the request and response,
	// including the full target URL.
	Summary

	// WithHeaders log messages contain a summary and the request/response headers
	WithHeaders

	// WithHeadersAndBodies log messages contain a summary and the request/response headers and bodies
	// Textual bodies are included in the log; for binary content, the size is shown instead.
	WithHeadersAndBodies
)

func AsLevel added in v0.12.0

func AsLevel(s string) (Level, error)

AsLevel parses a string to find the corresponding Level, accepting either one of the string values or a number. The input representation is determined by levelMarshalTextRep. It wraps Parse. The input case does not matter.

func LevelOf added in v0.12.0

func LevelOf(i int) Level

LevelOf returns a Level based on an ordinal number. This is the inverse of Ordinal. If the ordinal is out of range, an invalid Level is returned.

func (Level) Int added in v0.12.0

func (i Level) Int() int

Int returns the int value, which is not necessarily the same as the ordinal. It serves to facilitate polymorphism (see enum.IntEnum).

func (Level) IsValid added in v0.12.0

func (i Level) IsValid() bool

IsValid determines whether a Level is one of the defined constants.

func (Level) MarshalJSON added in v0.12.0

func (i Level) MarshalJSON() ([]byte, error)

MarshalJSON converts values to bytes suitable for transmission via JSON. The representation is chosen according to levelMarshalTextRep.

func (Level) MarshalText added in v0.12.0

func (i Level) MarshalText() (text []byte, err error)

MarshalText converts values to a form suitable for transmission via JSON, XML etc. The representation is chosen according to levelMarshalTextRep.

func (Level) Ordinal added in v0.0.7

func (i Level) Ordinal() int

Ordinal returns the ordinal number of a Level.

func (*Level) Parse added in v0.12.0

func (v *Level) Parse(s string) error

Parse parses a string to find the corresponding Level, accepting one of the string values or a number. The input representation is determined by levelMarshalTextRep. It is used by AsLevel. The input case does not matter.

Usage Example

v := new(Level)
err := v.Parse(s)
...  etc

func (*Level) Scan added in v0.12.0

func (i *Level) Scan(value interface{}) (err error)

Scan parses some value, which can be a number, a string or []byte. It implements sql.Scanner, https://golang.org/pkg/database/sql/#Scanner

func (Level) String added in v0.0.7

func (i Level) String() string

String returns the literal string representation of a Level, which is the same as the const identifier.

func (Level) Tag added in v0.0.8

func (i Level) Tag() string

Tag returns the string representation of a Level. This is an alias for String.

func (*Level) UnmarshalJSON added in v0.12.0

func (i *Level) UnmarshalJSON(text []byte) error

UnmarshalJSON converts transmitted JSON values to ordinary values. It allows both ordinals and strings to represent the values.

func (*Level) UnmarshalText added in v0.12.0

func (i *Level) UnmarshalText(text []byte) error

UnmarshalText converts transmitted values to ordinary values.

func (Level) Value added in v0.12.0

func (i Level) Value() (driver.Value, error)

Value converts the Level to a string. It implements driver.Valuer, https://golang.org/pkg/database/sql/driver/#Valuer

type LogContent

type LogContent struct {
	Header http.Header
	Body   *body.Body
}

func (LogContent) ContentType added in v0.16.0

func (lc LogContent) ContentType() string

ContentType gets the "Content-Type" header and returns the first part, i.e. excluding all parameters.

func (LogContent) FileExtension added in v0.16.0

func (lc LogContent) FileExtension() string

FileExtension gets normal file extension for the content type represented by this content.

func (LogContent) IsTextual added in v0.16.0

func (lc LogContent) IsTextual() bool

IsTextual determines whether this content is normally consiudered to be textual. If the content is binary, the result is false.

type LogItem

type LogItem struct {
	Method     string
	URL        *url.URL
	StatusCode int
	Request    LogContent
	Response   LogContent
	Err        error
	Start      time.Time
	Duration   time.Duration
	Level      Level
}

LogItem records information about one HTTP round-trip.

func (*LogItem) FileName added in v0.16.0

func (item *LogItem) FileName() string

FileName builds a filename that distinctively represents the request that raised the LogItem. This uses ItemFileName.

type VariableFilter added in v0.3.0

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

VariableFilter is a Filter that is controlled by a predicate. This predicate can be altered by any goroutine at any time.

func NewVariableFilter added in v0.3.0

func NewVariableFilter(initial Level) *VariableFilter

NewVariableFilter is a Filter that initially has a fixed level. However, its predicate can be changed later.

func NewVariablePredicate added in v0.3.0

func NewVariablePredicate(initial FilterFunc) *VariableFilter

NewVariablePredicate is a Filter with a predicate that can be changed later.

func (*VariableFilter) Level added in v0.3.0

func (vf *VariableFilter) Level(req *http.Request) Level

func (*VariableFilter) SetLevel added in v0.3.0

func (vf *VariableFilter) SetLevel(newLevel FilterFunc)

SetLevel allows the predicate to be changed. This can be called from any goroutine.

Directories

Path Synopsis

Jump to

Keyboard shortcuts

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