log

package
v16.1.0-rc1 Latest Latest
Warning

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

Go to latest
Published: May 30, 2023 License: MIT Imports: 15 Imported by: 0

Documentation

Index

Constants

View Source
const (
	// GitalyLogDirEnvKey defines the environment variable used to specify the Gitaly log directory
	GitalyLogDirEnvKey = "GITALY_LOG_DIR"
	// LogTimestampFormat defines the timestamp format in log files
	LogTimestampFormat = "2006-01-02T15:04:05.000"
	// LogTimestampFormatUTC defines the utc timestamp format in log files
	LogTimestampFormatUTC = "2006-01-02T15:04:05.000Z"
)

Variables

View Source
var (

	// Loggers is convenient when you want to apply configuration to all
	// loggers
	Loggers = []*logrus.Logger{defaultLogger, grpcGo}
)

Functions

func Configure

func Configure(loggers []*logrus.Logger, format string, level string)

Configure sets the format and level on all loggers. It applies level mapping to the GrpcGo logger.

func DeciderOption

func DeciderOption() grpcmwlogrus.Option

DeciderOption returns a Option to support log filtering. If "GITALY_LOG_REQUEST_METHOD_DENY_PATTERN" ENV variable is set, logger will filter out the log whose "fullMethodName" matches it; If "GITALY_LOG_REQUEST_METHOD_ALLOW_PATTERN" ENV variable is set, logger will only keep the log whose "fullMethodName" matches it; Under any conditions, the error log will not be filtered out; If the ENV variables are not set, there will be no additional effects.

func Default

func Default() *logrus.Entry

Default is the default logrus logger

func GrpcGo

func GrpcGo() *logrus.Entry

GrpcGo is a dedicated logrus logger for the grpc-go library. We use it to control the library's chattiness.

func MessageProducer

func MessageProducer(mp grpcmwlogrus.MessageProducer, fieldsProducers ...FieldsProducer) grpcmwlogrus.MessageProducer

MessageProducer returns a wrapper that extends passed mp to accept additional fields generated by each of the fieldsProducers.

func NewHookLogger

func NewHookLogger(ctx context.Context) *logrus.Entry

NewHookLogger creates a file logger, since both stderr and stdout will be displayed in git output

func PropagationMessageProducer

func PropagationMessageProducer(actual grpcmwlogrus.MessageProducer) grpcmwlogrus.MessageProducer

PropagationMessageProducer catches logging information from the context and populates it to the special holder that should be present in the context. Should be used only in combination with PerRPCLogHandler.

func StreamLogDataCatcherServerInterceptor

func StreamLogDataCatcherServerInterceptor() grpc.StreamServerInterceptor

StreamLogDataCatcherServerInterceptor catches logging data produced by the upper interceptors and propagates it into the holder to pop up it to the HandleRPC method of the PerRPCLogHandler.

func UTCJsonFormatter

func UTCJsonFormatter() logrus.Formatter

UTCJsonFormatter returns a Formatter that formats a logrus Entry's as json and converts the time field into UTC

func UTCTextFormatter

func UTCTextFormatter() logrus.Formatter

UTCTextFormatter returns a Formatter that formats a logrus Entry's as text and converts the time field into UTC

func UnaryLogDataCatcherServerInterceptor

func UnaryLogDataCatcherServerInterceptor() grpc.UnaryServerInterceptor

UnaryLogDataCatcherServerInterceptor catches logging data produced by the upper interceptors and propagates it into the holder to pop up it to the HandleRPC method of the PerRPCLogHandler.

Types

type FieldsProducer

type FieldsProducer func(context.Context, error) logrus.Fields

FieldsProducer returns fields that need to be added into the logging context. error argument is the result of RPC handling.

type PerRPCLogHandler

type PerRPCLogHandler struct {
	Underlying     stats.Handler
	FieldProducers []FieldsProducer
}

PerRPCLogHandler is designed to collect stats that are accessible from the google.golang.org/grpc/stats.Handler, because some information can't be extracted on the interceptors level.

func (PerRPCLogHandler) HandleConn

func (lh PerRPCLogHandler) HandleConn(ctx context.Context, cs stats.ConnStats)

HandleConn only calls Underlying and exists to satisfy gRPC stats.Handler.

func (PerRPCLogHandler) HandleRPC

func (lh PerRPCLogHandler) HandleRPC(ctx context.Context, rs stats.RPCStats)

HandleRPC catches each RPC call and for the *stats.End stats invokes custom message producers to populate logging data. Once all data is collected the actual logging happens by using logger that is caught by PropagationMessageProducer.

func (PerRPCLogHandler) TagConn

TagConn only calls Underlying and exists to satisfy gRPC stats.Handler.

func (PerRPCLogHandler) TagRPC

TagRPC propagates a special data holder into the context that is responsible to hold logging information produced by the logging interceptor. The logging data should be caught by the UnaryLogDataCatcherServerInterceptor. It needs to be included into the interceptor chain below logging interceptor.

Jump to

Keyboard shortcuts

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