65 lines
2.4 KiB
Dart
65 lines
2.4 KiB
Dart
import 'dart:async';
|
|
import 'dart:io';
|
|
import 'package:flutter/foundation.dart';
|
|
import 'package:http/http.dart' as http;
|
|
|
|
class ErrorService {
|
|
static Future<void> reportError(dynamic error, StackTrace stackTrace, Map<String, dynamic> deviceInfo, List<String> operationLogs) async {
|
|
try {
|
|
final String errorMessage = error.toString();
|
|
final String stackTraceString = stackTrace.toString();
|
|
final String estimatedCause = _estimateErrorCause(errorMessage);
|
|
//final String deviceInfo = await _getDeviceInfo();
|
|
|
|
final Uri url = Uri.parse('https://rogaining.sumasen.net/report-error');
|
|
final response = await http.post(
|
|
url,
|
|
body: {
|
|
'error_message': errorMessage,
|
|
'stack_trace': stackTraceString,
|
|
'estimated_cause': estimatedCause,
|
|
'device_info': deviceInfo,
|
|
'operation_logs': operationLogs.join('\n'), // オペレーションログを改行で結合して送信
|
|
},
|
|
);
|
|
|
|
if (response.statusCode == 200) {
|
|
// エラー報告が成功した場合の処理(必要に応じて)
|
|
debugPrint("===== エラーログ送信成功しました。 ====");
|
|
} else {
|
|
// エラー報告が失敗した場合の処理(必要に応じて)
|
|
debugPrint("===== エラーログ送信失敗しました。 ====");
|
|
}
|
|
} catch (e) {
|
|
// エラー報告中にエラーが発生した場合の処理(必要に応じて)
|
|
debugPrint("===== エラーログ送信中にエラーになりました。 ====");
|
|
}
|
|
}
|
|
|
|
static String _estimateErrorCause(String errorMessage) {
|
|
// エラーメッセージに基づいてエラーの原因を推定するロジックを追加する
|
|
if (errorMessage.contains('NetworkException')) {
|
|
return 'ネットワーク接続エラー';
|
|
} else if (errorMessage.contains('DatabaseException')) {
|
|
return 'データベースエラー';
|
|
} else if (errorMessage.contains('AuthenticationException')) {
|
|
return '認証エラー';
|
|
} else {
|
|
return '不明なエラー';
|
|
}
|
|
}
|
|
|
|
/*
|
|
// 2024-4-8 Akira: メモリ使用量のチェックのため追加 See #2810
|
|
//
|
|
static void reportMemoryError(String message, StackTrace stackTrace) async {
|
|
final errorDetails = FlutterErrorDetails(
|
|
exception: Exception(message),
|
|
stack: stackTrace,
|
|
);
|
|
await reportError(errorDetails.exception, errorDetails.stack ?? StackTrace.current, deviceInfo);
|
|
}
|
|
*/
|
|
}
|
|
|