github.com/terraform-linters/tflint-plugin-sdk@v0.22.0/plugin/internal/interceptor/logging.go (about)

     1  package interceptor
     2  
     3  import (
     4  	"context"
     5  
     6  	"github.com/terraform-linters/tflint-plugin-sdk/logger"
     7  	"google.golang.org/grpc"
     8  )
     9  
    10  // RequestLogging is an interceptor for gRPC request logging.
    11  // It outouts all request logs as "trace" level, and if an error occurs,
    12  // it outputs the response as "error" level.
    13  func RequestLogging(direction string) grpc.UnaryServerInterceptor {
    14  	return func(ctx context.Context, req interface{}, info *grpc.UnaryServerInfo, handler grpc.UnaryHandler) (interface{}, error) {
    15  		logger.Trace("gRPC request", "direction", direction, "method", info.FullMethod, "req", req)
    16  		ret, err := handler(ctx, req)
    17  		if err != nil {
    18  			logger.Error("failed to gRPC request", "direction", direction, "method", info.FullMethod, "err", err)
    19  		}
    20  		return ret, err
    21  	}
    22  }