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 ¶
- func DefaultExtractInitialRequestDecider(ctx context.Context, fullMethodName string, servingObject interface{}) bool
- func DefaultServerPayloadLoggingDecider(ctx context.Context, fullMethodName string, servingObject interface{}) bool
- func ExtractTraceParent(ctx context.Context) string
- func IgnoreMethodServerPayloadLoggingDecider(fullIgnoredMethodName string) grpc_logging.ServerPayloadLoggingDecider
- func IgnoreMethodsServerPayloadLoggingDecider(fullIgnoredMethodNames ...string) grpc_logging.ServerPayloadLoggingDecider
- func NewLogger() *logrus.Logger
- func RequestExtractor(entry *logrus.Entry, decider func(string) bool) grpc_ctxtags.RequestFieldExtractorFunc
- func WithElasticsearchServerLogger(logrusEntry *logrus.Entry, ...) []grpc.ServerOption
- type JSONPbMarshaller
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 ¶
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 ¶
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 ¶
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.