init method
初始化日志系统
Implementation
Future<void> init() async {
if (_isInitialized) return;
try {
// 获取日志目录
final directory = await getApplicationDocumentsDirectory();
final logDir = Directory('${directory.path}/logs');
// 创建日志目录
if (!await logDir.exists()) {
await logDir.create(recursive: true);
}
// 清理过期日志
await _cleanOldLogs(logDir);
// 创建新日志文件
final timestamp = DateTime.now().toIso8601String().split('.')[0].replaceAll(':', '-');
_logFile = File('${logDir.path}/app_$timestamp.log');
_logSink = _logFile!.openWrite(mode: FileMode.append);
// 启动异步写入
_logSubscription = _logStream.stream.listen((log) async {
await _writeToFile(log);
});
_isInitialized = true;
// 写入启动日志
info('Logger initialized successfully');
info('Log file: ${_logFile!.path}');
info('Environment: ${kDebugMode ? "DEBUG" : "RELEASE"}');
info('Min log level: ${_minLevel.name}');
} catch (e) {
print('❌ Failed to initialize logger: $e');
}
}