zerolog

package module
v2.0.0-rc.3 Latest Latest
Warning

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

Go to latest
Published: Sep 13, 2022 License: Apache-2.0 Imports: 3 Imported by: 25

Documentation

Overview

Package zerolog provides a small adapter required to use zerolog in logging gRPC middlewares. Please see examples for examples of use.

Example (InitializationWithCustomLevels)
package main

import (
	"os"

	grpczerolog "github.com/grpc-ecosystem/go-grpc-middleware/providers/zerolog/v2"
	"github.com/rs/zerolog"
	"google.golang.org/grpc"

	middleware "github.com/grpc-ecosystem/go-grpc-middleware/v2"
	"github.com/grpc-ecosystem/go-grpc-middleware/v2/interceptors/logging"
)

var customFunc logging.CodeToLevel

func main() {
	// Logger is used, allowing pre-definition of certain fields by the user.
	logger := zerolog.New(os.Stderr)
	// Shared options for the logger, with a custom gRPC code to log level function.
	opts := []logging.Option{
		logging.WithLevels(customFunc),
	}
	// Create a server, make sure we put the tags context before everything else.
	_ = grpc.NewServer(
		middleware.WithUnaryServerChain(
			logging.UnaryServerInterceptor(grpczerolog.InterceptorLogger(logger), opts...),
		),
		middleware.WithStreamServerChain(
			logging.StreamServerInterceptor(grpczerolog.InterceptorLogger(logger), opts...),
		),
	)
}
Output:

Example (InitializationWithDurationFieldOverride)
package main

import (
	"os"

	grpczerolog "github.com/grpc-ecosystem/go-grpc-middleware/providers/zerolog/v2"
	"github.com/rs/zerolog"
	"google.golang.org/grpc"

	middleware "github.com/grpc-ecosystem/go-grpc-middleware/v2"
	"github.com/grpc-ecosystem/go-grpc-middleware/v2/interceptors/logging"
)

var customDurationToFields logging.DurationToFields

func main() {
	// Logger is used, allowing pre-definition of certain fields by the user.
	logger := zerolog.New(os.Stderr)
	// Shared options for the logger, with a custom duration to log field function.
	opts := []logging.Option{
		logging.WithDurationField(customDurationToFields),
	}
	// Create a server, make sure we put the tags context before everything else.
	_ = grpc.NewServer(
		middleware.WithUnaryServerChain(
			logging.UnaryServerInterceptor(grpczerolog.InterceptorLogger(logger), opts...),
		),
		middleware.WithStreamServerChain(
			logging.StreamServerInterceptor(grpczerolog.InterceptorLogger(logger), opts...),
		),
	)
}
Output:

Index

Examples

Constants

This section is empty.

Variables

This section is empty.

Functions

This section is empty.

Types

type Logger

type Logger struct {
	zerolog.Logger
}

Logger is a zerolog logging adapter compatible with logging middlewares.

func InterceptorLogger

func InterceptorLogger(logger zerolog.Logger) *Logger

InterceptorLogger is a zerolog.Logger to Logger adapter.

func (*Logger) Log

func (l *Logger) Log(lvl logging.Level, msg string)

Log implements the logging.Logger interface.

func (Logger) With

func (l Logger) With(fields ...string) logging.Logger

With implements the logging.Logger interface.

Jump to

Keyboard shortcuts

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