telegram_logger πŸ“±βž‘οΈπŸ“²

pub package License: MIT

A Flutter package for sending error reports and logs to Telegram with optional screenshots. Perfect for debugging and monitoring your Flutter applications in real-time!

✨ Features

  • 🚨 Error reporting - Send crash reports and errors to Telegram
  • πŸ“‹ Custom logging - Send custom log messages
  • πŸ“Έ Screenshot support - Include screenshots with error reports
  • 🎨 Customizable templates - Create your own message templates
  • πŸ”§ Easy setup - Simple configuration with Telegram bot
  • πŸ“± Cross-platform - Works on Android, iOS, Web, and Desktop

πŸš€ Getting Started

1. Add dependency

Add this to your pubspec.yaml:

dependencies:
  telegram_logger: ^0.0.1

2. Create Telegram Bot

Step 1: Create a new bot

  1. Open Telegram and search for @BotFather
  2. Start a chat with BotFather
  3. Send /newbot command
  4. Choose a name for your bot (e.g., "MyApp Error Bot")
  5. Choose a username for your bot (e.g., "myapp_error_bot")
  6. BotFather will give you a bot token - save this!

πŸ“Ί Video Tutorial: How to Create Telegram Bot

Step 2: Get your Chat ID

  1. Search for @userinfobot on Telegram
  2. Start a chat with it
  3. Send any message
  4. The bot will reply with your Chat ID - save this!

πŸ“Ί Video Tutorial: How to Get Telegram Chat ID

3. Initialize in your app

import 'package:telegram_logger/telegram_logger.dart';

void main() {
  // Initialize TelegramLogger
  TelegramLogger.init(
    botToken: 'YOUR_BOT_TOKEN',
    chatId: 'YOUR_CHAT_ID',
    appName: 'My Flutter App',
  );

  // Catch Flutter errors automatically
  FlutterError.onError = (FlutterErrorDetails details) {
    TelegramLogger.sendError(
      errorMessage: details.exception.toString(),
      includeScreenshot: true,
    );
  };

  runApp(MyApp());
}

πŸ“– Usage

Basic Error Reporting

try {
  // Your code that might throw an error
  await riskyOperation();
} catch (e) {
  TelegramLogger.sendError(
    errorMessage: e.toString(),
    includeScreenshot: true,
    context: context,
  );
}

Custom Log Messages

// Send info logs
TelegramLogger.sendLog(
  message: "User logged in successfully",
  includeScreenshot: false,
);

// Send with screenshot
TelegramLogger.sendLog(
  message: "Payment completed",
  includeScreenshot: true,
  context: context,
);

Custom Message Templates

TelegramLogger.sendError(
  errorMessage: "Database connection failed",
  customTemplate: (error, time, appName) {
    return '''
πŸ”₯ CRITICAL ERROR πŸ”₯
App: $appName
Time: ${time.toLocal()}
Error: $error
Environment: Production
''';
  },
);

Advanced Setup with Global Error Handling

void main() {
  // Initialize
  TelegramLogger.init(
    botToken: 'YOUR_BOT_TOKEN',
    chatId: 'YOUR_CHAT_ID',
    appName: 'My Flutter App',
    screenshotSuccessLog: 'βœ… Screenshot sent successfully!',
    screenshotFailureLog: '❌ Failed to send screenshot:',
  );

  // Handle Flutter framework errors
  FlutterError.onError = (FlutterErrorDetails details) {
    TelegramLogger.sendError(
      errorMessage: details.exception.toString(),
      includeScreenshot: true,
    );
  };

  // Handle other errors
  PlatformDispatcher.instance.onError = (error, stack) {
    TelegramLogger.sendError(
      errorMessage: error.toString(),
      includeScreenshot: false,
    );
    return true;
  };

  runApp(MyApp());
}

Catch UI Overflow Errors

void main() {
  TelegramLogger.init(
    botToken: 'YOUR_BOT_TOKEN',
    chatId: 'YOUR_CHAT_ID',
    appName: 'My Flutter App',
  );

  // Catch overflow and other UI errors
  FlutterError.onError = (FlutterErrorDetails details) {
    if (details.exception.toString().contains('RenderFlex overflowed')) {
      TelegramLogger.sendError(
        errorMessage: "UI Overflow: ${details.exception.toString()}",
        includeScreenshot: true,
      );
    } else {
      TelegramLogger.sendError(
        errorMessage: details.exception.toString(),
        includeScreenshot: true,
      );
    }
  };

  runApp(MyApp());
}

🎯 API Reference

TelegramLogger.init()

Initialize the logger with your bot credentials.

TelegramLogger.init({
  required String botToken,        // Your Telegram bot token
  required String chatId,          // Your Telegram chat ID
  required String appName,         // Your app name
  String? screenshotSuccessLog,    // Custom success message
  String? screenshotFailureLog,    // Custom failure message
  String? messageSuccessLog,       // Custom success message for text
  String? messageFailureLog,       // Custom failure message for text
});

TelegramLogger.sendError()

Send error reports to Telegram.

TelegramLogger.sendError({
  required String errorMessage,                           // Error message
  bool includeScreenshot = false,                        // Include screenshot?
  BuildContext? context,                                 // Context for screenshot
  String Function(String, DateTime, String)? customTemplate, // Custom template
});

TelegramLogger.sendLog()

Send custom log messages to Telegram.

TelegramLogger.sendLog({
  required String message,         // Log message
  bool includeScreenshot = false,  // Include screenshot?
  BuildContext? context,          // Context for screenshot
});

🎬 Video Tutorials

πŸ›‘οΈ Security Notes

  • Never commit your bot token to version control
  • Use environment variables for sensitive data
  • Consider using different bots for different environments (dev, staging, prod)
// Good practice
TelegramLogger.init(
  botToken: const String.fromEnvironment('TELEGRAM_BOT_TOKEN'),
  chatId: const String.fromEnvironment('TELEGRAM_CHAT_ID'),
  appName: 'My App',
);

πŸ“ Message Templates

Default Error Template

🚨 Error Report
πŸ•’ Time: 2024-07-16 14:30:25
πŸ“± App: My Flutter App
❗ Error: Exception: Database connection failed

Default Log Template

πŸ“‹ Log Message
πŸ•’ Time: 2024-07-16 14:30:25
πŸ“± App: My Flutter App
πŸ’¬ Message: User logged in successfully

🀝 Contributing

Contributions are welcome! Please feel free to submit a Pull Request.

πŸ“„ License

This project is licensed under the MIT License - see the LICENSE file for details.

πŸ™ Support

If you find this package helpful, please give it a ⭐ on GitHub!

For issues and feature requests, please visit our GitHub Issues.


Made with ❀️ by Nurmuhammad

Libraries

telegram_logger