talker_grpc_logger 5.0.0
talker_grpc_logger: ^5.0.0 copied to clipboard
A lightweight, flexible grpc client logger built on the Talker platform, offering advanced exception handling and logging for Dart and Flutter applications.
talker_grpc_logger #
Lightweight and customizable grpc client logger on talker base.
Talker - Advanced exception handling and logging for dart/flutter applications 🚀
Preview #
This is how the logs of your grpc requests will look in the console
Note #
At the moment, only unary RPCs are supported. Streaming RPCs will probably be added in the future. Contributions are welcome!
Usage #
Create an interceptor and instrument your RPC client:
import 'package:grpc/grpc.dart';
import 'package:talker_grpc_logger/talker_grpc_logger.dart';
void main() {
late final channel = GrpcOrGrpcWebClientChannel.toSingleEndpoint(
host: 'localhost',
port: 50051,
);
// Generate your RPC client as usual, and use the interceptor to log the requests and responses.
late final rpcClient = YourRPCClient(channel, interceptors: [
TalkerGrpcLogger()
]);
}
Usage with Talker #
Very similar to the section above, just pass a Talker instance to the interceptor:
import 'package:grpc/grpc.dart';
import 'package:talker_flutter/talker_flutter.dart';
import 'package:talker_grpc_logger/talker_grpc_logger.dart';
void main() {
// Not mandatory, but useful to see the grpc logs in the Talker screen
final talker = TalkerFlutter.init();
// Define port and host as you see fit
var host = 'localhost';
var port = 50051;
// transportSecure needs to be true when talking to a server through TLS.
// This can be disabled for local development.
// GrpcOrGrpcWebClientChannel is a channel type compatible with web and native. There
// are other channel types available for each platform.
late final channel = GrpcOrGrpcWebClientChannel.toSingleEndpoint(
host: host,
port: port,
transportSecure: host == 'localhost' ? false : true);
final List<ClientInterceptor> interceptors = [
TalkerGrpcLogger(talker: talker)
];
// Generate your RPC client as usual, and use the interceptor to log the requests and responses.
late final rpcClient = YourRPCClient(channel, interceptors: interceptors);
}
Token obfuscation #
TalkerGrpcLogger
will obfuscate bearer tokens by default. It'll look at the
metadata of the request and obfuscate the authorization
header. It'll look
like Bearer [obfuscated]
in the logs. It is highly recommended to keep this
option enabled. If you want to disable it, you can pass obfuscateToken: false
:
TalkerGrpcLogger(talker: talker, obfuscateToken: true)