DEV Community

Rohith Gilla
Rohith Gilla

Posted on

Effortless Logging and Insights: Transform Your Flutter App with Telemetry.sh

Why do I need logging?

Imagine this: You’re sipping your coffee, basking in the satisfaction of a smooth Flutter app deployment. Everything seems perfect until that message pops up—your app has a bug in production. Panic sets in as you frantically sift through code, wishing you had a crystal ball to see exactly what your users are experiencing. What if there was a way to capture crucial data at the moment it happens, giving you instant insights into those elusive bugs?

Telemetry.sh

Enter telemetry.sh—the tool you didn’t know you needed, until now. With just a few lines of code, you can start logging and tracking user behaviours, errors, and more, right from your Flutter app. It’s as simple as logging:

final response = await telemetry.log('user_${uid}', data);
Enter fullscreen mode Exit fullscreen mode

In this post, we’ll dive into how you can harness the power of telemetry.sh

https://media1.tenor.com/m/YEquEHgzgLkAAAAC/lets-go-lets-go-marvel.gif

Setup

Setting up Telemetry.sh in your dart/flutter project is very simple.

Step 0

Step 1

If dart only project

dart pub add telemetry_sh
Enter fullscreen mode Exit fullscreen mode

If flutter project

flutter pub add telemetry_sh
Enter fullscreen mode Exit fullscreen mode

Step 2

Initialize the TelemetrySh instance with your API key

import 'package:telemetry_sh/telemetry_sh.dart';


final telemetry = TelemetrySh('YOUR_API_KEY');
Enter fullscreen mode Exit fullscreen mode

Step 3

Log what you need :)

final response = await telemetry.log('table_name', data);
Enter fullscreen mode Exit fullscreen mode

This tool behaves like a SQL database, where you can insert data in a table and query on it.

Then you can query the data in the console
Query console

How I like to use the tool

Telemetry.sh is incredibly versatile, and its flexibility allows you to structure your logs in a way that makes sense for your application. Here’s how I like to set it up for various scenarios.

Structuring Your Logs with Custom Tables

One of the best features of Telemetry.sh is that it treats your logs like entries in a SQL database. This means you can create different “tables” for different logging contexts. For example, let’s say you want to track user activities, errors, and API interactions separately. You can structure your logs like this:

User Activity Logs: Use a table structure like user_activity_${uid} where uid is the user’s unique identifier. This allows you to track all activities performed by a particular user. Each log entry can include detailed data such as timestamp, action performed, and any relevant metadata.

final activityData = <String,dynamic>{
    'timestamp': DateTime.now().toIso8601String(),
    'action': 'clicked_button',
    'metadata': {'button_id': 'save_button'}
};
await telemetry.log('user_activity_${uid}', activityData);
Enter fullscreen mode Exit fullscreen mode

Error Logs: For error tracking, you can use a structure like error_logs. Each entry can capture the error message, stack trace, and any additional context that might be helpful for debugging.

final errorData = <String,dynamic>{
    'timestamp': DateTime.now().toIso8601String(),
    'error': 'NullPointerException',
    'stack_trace': errorStackTrace,
    'user_id': uid
};
await telemetry.log('error_logs', errorData);
Enter fullscreen mode Exit fullscreen mode

API Interaction Logs: If your app makes numerous API calls, it’s useful to log these interactions in a separate table like api_interactions. Here, you can store the request details, response status, and time taken for the request. This can help you diagnose issues related to API latency or failures.

final apiData = <String,dynamic>{
    'timestamp': DateTime.now().toIso8601String(),
    'endpoint': '/api/user/profile',
    'status': response.statusCode,
    'response_time_ms': duration.inMilliseconds
};
await telemetry.log('api_interactions', apiData);
Enter fullscreen mode Exit fullscreen mode

Incorporating a robust logging solution like Telemetry.sh into your Flutter app isn’t just a nice-to-have; it’s a game changer. By structuring your logs effectively and leveraging Telemetry.sh’s powerful querying capabilities, you can transform your logging data into actionable insights. Whether you’re tracking user behaviours, debugging errors, or monitoring API performance, this tool empowers you to stay ahead of potential issues and continuously improve your app’s stability and user experience.

So, as you sip your coffee and watch your app thrive in production, remember that with Telemetry.sh, you’re not just logging data—you’re building a stronger, more resilient application. Happy coding!

https://media1.tenor.com/m/YV9D8JvmR6IAAAAC/penguin-hello.gif

Useful links
https://github.com/Rohithgilla12/telemetry_sh
https://pub.dev/packages/telemetry_sh

P.S. While I don’t own Telemetry.sh, I’m a big fan of the product, so much so that I wrote the Dart SDK for it as an open-source project.

Top comments (0)