sendLogEventsWithDio method
Implementation
@override
Future<void> sendLogEventsWithDio(List<LogEntry> entries,
Map<String, String> userProperties, CancelToken cancelToken) {
final jsonObject =
LokiPushBody([LokiStream(labelsString, entries)]).toJson();
final jsonBody = json.encode(jsonObject, toEncodable: (dynamic obj) {
if (obj is LogEntry) {
return {
'ts': _dateFormat.format(obj.ts.toUtc()),
'line': [
obj.lineLabels.entries
.map((entry) =>
'${entry.key}=${_encodeLineLabelValue(entry.value)}')
.join(' '),
obj.line,
].join(' - ')
};
}
return obj.toJson();
});
return _client
.post<dynamic>(
'https://$server/api/prom/push',
cancelToken: cancelToken,
data: jsonBody,
options: Options(
headers: <String, String>{
HttpHeaders.authorizationHeader: authHeader,
},
contentType: ContentType(
ContentType.json.primaryType, ContentType.json.subType)
.value,
),
)
.then(
(response) => Future<void>.value(null),
// _logger.finest('sent logs.');
)
.catchError((Object err, StackTrace stackTrace) {
String? message;
if (err is DioException) {
if (err.response != null) {
message = 'response:${err.response!.data}';
}
}
_logger.warning(
'Error while sending logs to loki. $message', err, stackTrace);
return Future<void>.error(err, stackTrace);
});
}