infinum/floggy

dio_logger error at web environment.

wangmir opened this issue · 1 comments

dio_logger emit error on XMLHttpRequest error of web environment when using flutter_loggy_dio.

XMLHttpRequest error is derived from CORS issue when launching flutter web environment (especially when debugging).

And in this situation, if I use dio logging with flutter_loggy_dio, the error log is not printed properly and even for the exception path because it crashed at logging stage rather than network error.

at dio_logger.dart,

_value was "<<< DioError │ GET │ null null │ null"

crash point in logger was on flutter_loggy_dio/diop_logger.dart: 166

  void _commit(LogLevel level) {
    if (level.priority >= LogLevel.error.priority) {
      final String _valueError = _value.toString();
      final String _errorTitle = _valueError.substring(0, _valueError.indexOf('\n')); // this line
      final String _errorBody = _valueError.substring(_errorTitle.length);
      loggy.log(level, _errorTitle, _errorBody);
    } else {
      loggy.log(level, _value.toString());
    }
    _value.clear();
  }

and error was

22:12:24.742: [E] packages/ming/main.dart 36:12 in <fn>: Error: Uncaught Error.
RangeError (end): Invalid value: Not in inclusive range 0..37: -1
dart-sdk/lib/_internal/js_dev_runtime/private/ddc_runtime/errors.dart 251:49  throw_
dart-sdk/lib/core/errors.dart 356:9                                           checkValidRange
dart-sdk/lib/_internal/js_dev_runtime/private/js_string.dart 168:22           substring]
packages/flutter_loggy_dio/flutter_loggy_dio/dio_logger.dart 166:45           [_commit]
packages/flutter_loggy_dio/flutter_loggy_dio/dio_logger.dart 92:5             onError$
dart-sdk/lib/_internal/js_dev_runtime/patch/async_patch.dart 84:54            runBody
dart-sdk/lib/_internal/js_dev_runtime/patch/async_patch.dart 123:5            _async
packages/flutter_loggy_dio/flutter_loggy_dio/dio_logger.dart 74:15            onError
packages/dio/src/dio_mixin.dart 574:28                                        <fn>
packages/dio/src/dio_mixin.dart 789:22                                        checkIfNeedEnqueue
packages/dio/src/dio_mixin.dart 572:22                                        <fn>
dart-sdk/lib/async/future.dart 252:37                                         <fn>
dart-sdk/lib/async/zone.dart 1418:47                                          _rootRun
dart-sdk/lib/async/zone.dart 1328:19                                          run
dart-sdk/lib/async/zone.dart 1236:7                                           runGuarded
dart-sdk/lib/async/zone.dart 1276:23                                          <fn>
dart-sdk/lib/async/zone.dart 1426:13                                          _rootRun
dart-sdk/lib/async/zone.dart 1328:19                                          run
dart-sdk/lib/async/zone.dart 1260:23                                          <fn>
dart-sdk/lib/_internal/js_dev_runtime/private/isolate_helper.dart 48:19       internalCallback

Closing, the latest release of the flutter_loggy_dio package should resolve this.
If the problem persists, feel free to reopen this issue.