generateTextMessage method
Internal method that generates a complete message about the event
See examples:
TalkerLog
-> TalkerLog.generateTextMessage
TalkerException
-> TalkerException.generateTextMessage
TalkerError
-> TalkerError.generateTextMessage
Implementation
@override
String generateTextMessage({
TimeFormat timeFormat = TimeFormat.timeAndSeconds,
}) {
final StringBuffer msg = StringBuffer();
msg.write('[$title]');
if (response?.request?.method != null || request?.method != null) {
msg.write(' [${response?.request?.method ?? request?.method}]');
}
if (response?.request != null || request != null) {
msg.writeln(' ${response?.request?.url ?? request?.url}');
} else if (exception is ClientException) {
msg.writeln(' ${(exception as ClientException).uri}');
} else {
msg.writeln();
}
if (response?.statusCode != null) {
msg.writeln('Status: ${response?.statusCode}');
}
final String? responseMessage = switch (exception) {
ClientException ex => ex.message,
Exception ex => ex.toString(),
_ => null,
};
if (settings.printResponseTime) {
final int? responseTime = getResponseTime(response?.headers) ??
getResponseTime(response?.request?.headers);
if (responseTime != null) {
msg.writeln('Time: $responseTime ms');
}
}
if (settings.printErrorMessage && (responseMessage?.isNotEmpty ?? false)) {
msg.writeln('Message: $responseMessage');
}
if (settings.printErrorHeaders && (response?.headers.isNotEmpty ?? false)) {
msg.writeln('Headers: ${convert(response?.headers)}');
}
final String? data = switch (response) {
Response res => res.body,
_ => null,
};
if (settings.printErrorData && (data?.isNotEmpty ?? false)) {
late final dynamic jsonData;
try {
jsonData = jsonDecode(data!);
} catch (_) {
jsonData = null;
}
try {
if (jsonData != null) {
msg.writeln('Data: ${convert(jsonData)}');
} else {
msg.writeln('Data: ${convert(data)}');
}
} catch (error, stackTrace) {
msg.writeln(
'Data: <failed to convert data: $error\nstackTrace: $stackTrace>',
);
}
}
return msg.toString().trimRight();
}