You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
83 lines
2.1 KiB
83 lines
2.1 KiB
import 'package:flutter/foundation.dart';
|
|
|
|
/// Log levels for different types of messages.
|
|
enum LogLevel {
|
|
/// Debug messages (only in debug mode).
|
|
debug,
|
|
|
|
/// Informational messages.
|
|
info,
|
|
|
|
/// Warning messages.
|
|
warning,
|
|
|
|
/// Error messages (always shown).
|
|
error,
|
|
}
|
|
|
|
/// Centralized logging service for the application.
|
|
///
|
|
/// Provides consistent logging across the app with different log levels.
|
|
/// In production, only errors are logged unless explicitly enabled.
|
|
class Logger {
|
|
/// Whether logging is enabled (can be configured via config).
|
|
static bool _enabled = kDebugMode;
|
|
|
|
/// Enable or disable logging.
|
|
static void setEnabled(bool enabled) {
|
|
_enabled = enabled;
|
|
}
|
|
|
|
/// Logs a message with the specified level.
|
|
///
|
|
/// [level] - The log level (debug, info, warning, error).
|
|
/// [message] - The message to log.
|
|
/// [error] - Optional error object.
|
|
/// [stackTrace] - Optional stack trace.
|
|
static void log(
|
|
LogLevel level,
|
|
String message, [
|
|
Object? error,
|
|
StackTrace? stackTrace,
|
|
]) {
|
|
// Always log errors, respect enabled flag for others
|
|
if (!_enabled && level != LogLevel.error) {
|
|
return;
|
|
}
|
|
|
|
final prefix = '[${level.name.toUpperCase()}]';
|
|
final timestamp = DateTime.now().toIso8601String();
|
|
|
|
debugPrint('$timestamp $prefix $message');
|
|
|
|
if (error != null) {
|
|
debugPrint('$timestamp $prefix Error: $error');
|
|
}
|
|
|
|
if (stackTrace != null) {
|
|
debugPrint('$timestamp $prefix Stack trace: $stackTrace');
|
|
}
|
|
}
|
|
|
|
/// Logs a debug message (only in debug mode).
|
|
static void debug(String message) {
|
|
log(LogLevel.debug, message);
|
|
}
|
|
|
|
/// Logs an informational message.
|
|
static void info(String message) {
|
|
log(LogLevel.info, message);
|
|
}
|
|
|
|
/// Logs a warning message.
|
|
static void warning(String message, [Object? error]) {
|
|
log(LogLevel.warning, message, error);
|
|
}
|
|
|
|
/// Logs an error message (always shown).
|
|
static void error(String message, [Object? error, StackTrace? stackTrace]) {
|
|
log(LogLevel.error, message, error, stackTrace);
|
|
}
|
|
}
|
|
|