writeEvents method
写入事件到文件 (实现同一天合并逻辑)
Implementation
Future<void> writeEvents(List<LogEvent> events) async {
if (events.isEmpty) return;
try {
// 获取当天的日期存储路径
final dateStoragePath = await config.getStoragePathByDate();
final dateDirectory = Directory(dateStoragePath);
// 确保日期目录存在
if (!await dateDirectory.exists()) {
await dateDirectory.create(recursive: true);
}
final fileName = _generateFileName();
final file = File('$dateStoragePath/$fileName');
// 检查当日主文件是否存在且大小是否超限
if (await file.exists()) {
final fileSize = await file.length();
// 检查文件大小是否超过指定限制 (默认10MB)
final maxSizeBytes = config.maxFileSize * 1024 * 1024;
if (fileSize > maxSizeBytes) {
// 文件过大,创建新的时间戳文件
final newFileName = _generateFileName(forceNew: true);
final newFile = File('$dateStoragePath/$newFileName');
await _writeEventsToFile(newFile, events, isNewFile: true);
if (config.enableDebugMode) {
debugPrint('📄 Created new log file due to size limit: $newFileName');
}
return;
} else {
// 文件存在且未超限,追加到现有文件
await _writeEventsToFile(file, events, isNewFile: false);
if (config.enableDebugMode) {
debugPrint('📝 Appended ${events.length} events to existing file: $fileName');
}
return;
}
} else {
// 文件不存在,创建新文件
await _writeEventsToFile(file, events, isNewFile: true);
if (config.enableDebugMode) {
debugPrint('📄 Created new log file: $fileName');
}
}
} catch (e) {
if (config.enableDebugMode) {
debugPrint('❌ Failed to write events: $e');
}
}
}