log method

Future<void> log({
  1. required String type,
  2. required String message,
  3. Map<String, dynamic>? data,
  4. String? app,
  5. String? url,
  6. String? userid,
  7. String? username,
  8. String? schema,
  9. String? reference,
})

Implementation

Future<void> log({
  required String type,
  required String message,
  Map<String, dynamic>? data,
  String? app,
  String? url,
  String? userid,
  String? username,
  String? schema,
  String? reference,
}) async {
  final callerInfo = _getCallerInfo();
  final logData = {
    'type': type,
    'data': jsonEncode(data ?? {}),
    'app': app ?? 'Total.js OpenLogger Dart/Flutter Client',
    'url': url,
    'userid': userid,
    'username': username ?? (autoConfig ? await _getDeviceName() : null),
    'schema': schema,
    'reference': reference,
    'message': message,
    'ua': autoConfig ? await _getUserAgent() : null,
    'ip': autoConfig ? await _getIpAddress() : null,
    'caller': callerInfo,  // Verwenden der callerInfo
  };

  try {
    final uri = Uri.parse('${this.url}/?token=$token');
    final response = await http.post(
      uri,
      headers: {'Content-Type': 'application/json'},
      body: jsonEncode(logData),
    );

    if (response.statusCode != 200) {
      developer.log('Failed to send log. Status code: ${response.statusCode}', name: 'OpenLogger');
    } else {
      developer.log('Log sent successfully.', name: 'OpenLogger');
    }
  } catch (error) {
    developer.log('Error occurred while sending log: $error', name: 'OpenLogger');
  }
}