error static method
- {dynamic error,
- StackTrace? stacktrace,
- required String library,
- required String event}
Log the given event
as an error with the highest severity level
The severity can be Level.INFO if error is an instance of ResponseError
.
Implementation
static void error({
dynamic error,
StackTrace? stacktrace,
required String library,
required String event,
}) {
final ignoredLibs = [
// Add here
];
if (ignoredLibs.contains(library)) {
return;
}
final String errorMessage = "Library: [$library]\nEvent: [$event]";
StackTrace? logstacktrace = stacktrace;
if (logstacktrace == null || logstacktrace.toString().isEmpty) {
logstacktrace = StackTrace.current;
}
if (kReleaseMode) {
dynamic parsedError = error;
if (error is DioException) {
if (error.type == DioExceptionType.badResponse) {
parsedError =
"Api error response: ${error.response?.data.toString() ?? "No data given"}";
DatadogSdk.instance.logs?.warn(
errorMessage,
errorKind: event,
errorMessage: parsedError.toString(),
errorStackTrace: logstacktrace,
attributes: {"userId": _userId, "clientId": _clientId},
);
} else if (error.type == DioExceptionType.cancel) {
// do not log as it was cancelled intentionally
return;
}
} else {
DatadogSdk.instance.logs?.error(
errorMessage,
errorKind: event,
errorMessage: parsedError.toString(),
errorStackTrace: logstacktrace,
attributes: {"userId": _userId, "clientId": _clientId},
);
}
}
developer.log(
errorMessage,
name: "ERR",
error: error,
stackTrace: Trace.from(logstacktrace).terse,
level: error is ResponseError ? Level.INFO.value : Level.SEVERE.value,
);
}