Documentation
¶
Overview ¶
Package zap provides a small adapter required to use zap in logging gRPC middlewares. Please see examples for examples of use.
Example (InitializationWithCustomLevels) ¶
package main
import (
grpczap "github.com/grpc-ecosystem/go-grpc-middleware/providers/zap/v2"
"go.uber.org/zap"
"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 := zap.NewNop()
// 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(grpczap.InterceptorLogger(logger), opts...),
),
middleware.WithStreamServerChain(
logging.StreamServerInterceptor(grpczap.InterceptorLogger(logger), opts...),
),
)
}
Output:
Example (InitializationWithDurationFieldOverride) ¶
package main
import (
grpczap "github.com/grpc-ecosystem/go-grpc-middleware/providers/zap/v2"
"go.uber.org/zap"
"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 := zap.NewNop()
// 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(grpczap.InterceptorLogger(logger), opts...),
),
middleware.WithStreamServerChain(
logging.StreamServerInterceptor(grpczap.InterceptorLogger(logger), opts...),
),
)
}
Output:
Index ¶
Examples ¶
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
This section is empty.
Types ¶
Click to show internal directories.
Click to hide internal directories.