telegram_logger 0.0.1
telegram_logger: ^0.0.1 copied to clipboard
A Flutter package for sending error reports and logs to Telegram with optional screenshots. Perfect for debugging and monitoring your Flutter applications.
telegram_logger π±β‘οΈπ² #
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
- Open Telegram and search for
@BotFather
- Start a chat with BotFather
- Send
/newbot
command - Choose a name for your bot (e.g., "MyApp Error Bot")
- Choose a username for your bot (e.g., "myapp_error_bot")
- BotFather will give you a bot token - save this!
πΊ Video Tutorial: How to Create Telegram Bot
Step 2: Get your Chat ID
- Search for
@userinfobot
on Telegram - Start a chat with it
- Send any message
- 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 #
- Create Telegram Bot: BotFather Tutorial
- Get Chat ID: UserInfoBot Tutorial
- Telegram Bot API: Complete Guide
π‘οΈ 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