reportHttpResponse method

Future<void> reportHttpResponse(
  1. Response response
)

HTTP 响应

Implementation

Future<void> reportHttpResponse(Response response) async {
  try {
    String? id = "${response.requestOptions.headers["id"]}";
    String method = response.requestOptions.method;
    String url = '${response.requestOptions.uri}';
    int? statusCode = response.statusCode;
    String? statusMessage = response.statusMessage;
    String duration = '${(DateTime.now().millisecondsSinceEpoch - int.parse(id)) / 1000}s';
    Map data = response.data ?? {};
    Map output = {
      "time": Jiffy.now().format(pattern: 'yyyy-MM-dd HH:mm:ss'),
      "eventName": "Response",
      "account": response.requestOptions.headers['account'],
      "method": method,
      "url": url,
      "statusCode": statusCode,
      "statusMessage": statusMessage,
      "duration": duration,
      "data": data,
      "id": id,
      ..._singleLogDeviceParams,
    };
    bool isSuccess = data['code'] == 1;
    String statusEmoji = isSuccess ? '✅' : '❌';
    String content =
        '''
$statusEmoji HTTP $method Response
Url: $url
Status Code: $statusCode
Status Message: $statusMessage
Duration: $duration
Data: ${normalizeConsoleJson(data)}
ID: $id''';
    UtilPrint.trace(content);
    _logQueue.addToQueue(
      path: p.join(dateRootPath, 'http.txt'),
      content: normalizeFileContent(output),
      mode: FileMode.append,
    );
  } catch (e, stackTrace) {
    debugPrint('日志服务 - HTTP 响应日志: $e\n$stackTrace');
  }
}