package ctxkit

import "github.com/grpc-ecosystem/go-grpc-middleware/logging/kit/ctxkit"

`ctxkit` is a ctxlogger that is backed by go-kit

It accepts a user-configured `log.Logger` that will be used for logging. The same `log.Logger` will be populated into the `context.Context` passed into gRPC handler code.

You can use `ctxkit.Extract` to log into a request-scoped `log.Logger` instance in your handler code.

As `ctxkit.Extract` will iterate all tags on from `grpc_ctxtags` it is therefore expensive so it is advised that you extract once at the start of the function from the context and reuse it for the remainder of the function (see examples).

Please see examples and tests for examples of use.

Index

Examples

Functions

func AddFields

func AddFields(ctx context.Context, fields ...interface{})

AddFields adds fields to the logger.

func Extract

func Extract(ctx context.Context) log.Logger

Extract takes the call-scoped Logger from grpc_kit middleware.

It always returns a Logger that has all the grpc_ctxtags updated.

Example (Unary)

Simple unary handler that adds custom fields to the requests's context. These will be used for all log statements.

Code:play 

package main

import (
	"context"

	"github.com/grpc-ecosystem/go-grpc-middleware/logging/kit/ctxkit"
	grpc_ctxtags "github.com/grpc-ecosystem/go-grpc-middleware/tags"

	pb_testproto "github.com/grpc-ecosystem/go-grpc-middleware/testing/testproto"
)

func main() {
	_ = func(ctx context.Context, ping *pb_testproto.PingRequest) (*pb_testproto.PingResponse, error) {
		// Add fields the ctxtags of the request which will be added to all extracted loggers.
		grpc_ctxtags.Extract(ctx).Set("custom_tags.string", "something").Set("custom_tags.int", 1337)

		// Extract a single request-scoped log.Logger and log messages.
		l := ctxkit.Extract(ctx)
		l.Log("msg", "some ping")
		l.Log("msg", "another ping")
		return &pb_testproto.PingResponse{Value: ping.Value}, nil
	}
}

func TagsToFields

func TagsToFields(ctx context.Context) []interface{}

TagsToFields transforms the Tags on the supplied context into kit fields.

func ToContext

func ToContext(ctx context.Context, logger log.Logger) context.Context

ToContext adds the kit.Logger to the context for extraction later. Returning the new context that has been created.

Source Files

context.go doc.go

Version
v1.4.0 (latest)
Published
Mar 15, 2023
Platform
linux/amd64
Imports
3 packages
Last checked
2 minutes ago

Tools for package owners.