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

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);
}
}

Powered by TurnKey Linux.