logger

package module
v1.0.3 Latest Latest
Warning

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

Go to latest
Published: May 23, 2019 License: Apache-2.0 Imports: 22 Imported by: 0

README

grpc-elasticsearch-logger

Logger for gRPC server to elasticsearch with elastic APM trace ID

Go Report Card GoDoc

Documentation

Overview

Package logger is used to log all intercepted unary and stream calls. The package exports the `NewLogger` function which sets up a logger with the elogrus hook and returns it.

The logger can be configured using environment variables:

LOG_LEVEL (default: "error") - Defines the log level of the logger, possible values:

"panic", "fatal", "error", "warn", "warning", "info", "debug", "trace"

LOG_INDEX (default: "log") - Defines the index to which the logs would be indexed to, the logs would be indexed to index pattern LOG_INDEX-*, where * is the current day's date in the format 'YYYY.MM.DD'

ELASTICSEARCH_URL (default: http://localhost:9200) - Defines the url of the elasticsearch server to index the logs to.

HOST_NAME (default: executable name) - Defines the host name of the server that is using the logger, which will be logged under 'Host' field.

There's the `WithElasticsearchServerLogger` function which sets up a `grpc.ServerOption` to intercept streams and unary calls with `*logrus.Entry` of the logger, created with `NewLogger`, and the options given to it. Returns the `grpc.ServerOption` which will be used in `grpc.NewServer` to log all incoming stream and unary calls. It also sets up the APM agent's unary server interceptor to log metrics to elastic APM.

The function `ExtractTraceParent` gets a `context.Context` which holds the "Elastic-Apm-Traceparent", which is the HTTP header for trace propagation, and returns the trace id.

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func DefaultExtractInitialRequestDecider added in v1.0.3

func DefaultExtractInitialRequestDecider(
	ctx context.Context,
	fullMethodName string,
	servingObject interface{}) bool

DefaultExtractInitialRequestDecider logs every initial request, for unary and streams.

func DefaultServerPayloadLoggingDecider

func DefaultServerPayloadLoggingDecider(
	ctx context.Context,
	fullMethodName string,
	servingObject interface{}) bool

DefaultServerPayloadLoggingDecider logs every payload.

func ExtractTraceParent

func ExtractTraceParent(ctx context.Context) string

ExtractTraceParent gets a `context.Context` which holds the "Elastic-Apm-Traceparent", which is the HTTP header for trace propagation, and returns the trace id.

func IgnoreMethodServerPayloadLoggingDecider

func IgnoreMethodServerPayloadLoggingDecider(
	fullIgnoredMethodName string,
) grpc_logging.ServerPayloadLoggingDecider

IgnoreMethodServerPayloadLoggingDecider ignores logging the payload of method that is equal to fullIgnoredMethodName.

func IgnoreMethodsServerPayloadLoggingDecider added in v1.0.1

func IgnoreMethodsServerPayloadLoggingDecider(
	fullIgnoredMethodNames ...string,
) grpc_logging.ServerPayloadLoggingDecider

IgnoreMethodsServerPayloadLoggingDecider ignores logging the payload of method that is equal to any string of fullIgnoredMethodNames.

func NewLogger

func NewLogger() *logrus.Logger

NewLogger creates a `*logrus.Logger` with `elogrus` hook, which logs to elasticsearch, and returns it.

func RequestExtractor

func RequestExtractor(entry *logrus.Entry, decider func(string) bool) grpc_ctxtags.RequestFieldExtractorFunc

RequestExtractor extracts the request and logs it as json under the key "grpc.request.content". Pass decider function to not extract the requests for certain methods.

func WithElasticsearchServerLogger

func WithElasticsearchServerLogger(
	logrusEntry *logrus.Entry,
	serverPayloadLoggingDecider grpc_logging.ServerPayloadLoggingDecider,
	extractInitialRequestDecider func(string) bool,
	opts ...grpc_logrus.Option,
) []grpc.ServerOption

WithElasticsearchServerLogger sets up a `grpc.ServerOption` to intercept streams with `*logrus.Entry` of the logger, created with `NewLogger`, and the options given to it. Returns the `grpc.ServerOption` which will be used in `grpc.NewServer` to log all incoming stream calls.

Types

type JSONPbMarshaller

type JSONPbMarshaller struct {
	proto.Message
}

JSONPbMarshaller is a struct used to marshal a protobuf message to JSON.

func (*JSONPbMarshaller) MarshalJSON

func (j *JSONPbMarshaller) MarshalJSON() ([]byte, error)

MarshalJSON marshals a protobuf message to JSON.

Jump to

Keyboard shortcuts

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