Skip to content

Commit 2a30a8a

Browse files
authored
fix: options.diagnosticLevel not affecting logs (#2856)
* v9: Set log level to `warning` by default (#2836) * update * update test * update init native sdk test * Update CHANGELOG * Add additional test * Update CHANGELOG * Update CHANGELOG * Update * Update * Fix test * Fix test * Fix analyze * Remove prod scheme * Update mocks * Update mocks
1 parent f502e51 commit 2a30a8a

File tree

8 files changed

+99
-42
lines changed

8 files changed

+99
-42
lines changed

CHANGELOG.md

+6
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,11 @@
11
# Changelog
22

3+
## Unreleased
4+
5+
### Fixes
6+
7+
- `options.diagnosticLevel` not affecting logs ([#2856](https://github.com/getsentry/sentry-dart/pull/2856))
8+
39
## 8.14.1
410

511
### Fixes

dart/lib/src/diagnostic_logger.dart

+2-1
Original file line numberDiff line numberDiff line change
@@ -2,8 +2,9 @@ import 'protocol.dart';
22
import 'sentry_options.dart';
33

44
class DiagnosticLogger {
5-
final SentryLogger _logger;
65
final SentryOptions _options;
6+
final SentryLogger _logger;
7+
SentryLogger get logger => _logger;
78

89
DiagnosticLogger(this._logger, this._options);
910

dart/lib/src/sentry_options.dart

+14-7
Original file line numberDiff line numberDiff line change
@@ -135,9 +135,13 @@ class SentryOptions {
135135
SentryLogger get logger => _logger;
136136

137137
set logger(SentryLogger logger) {
138-
_logger = DiagnosticLogger(logger, this).log;
138+
diagnosticLogger = DiagnosticLogger(logger, this);
139+
_logger = diagnosticLogger!.log;
139140
}
140141

142+
@visibleForTesting
143+
DiagnosticLogger? diagnosticLogger;
144+
141145
final List<EventProcessor> _eventProcessors = [];
142146

143147
/// Are callbacks that run for every event. They can either return a new event which in most cases
@@ -159,13 +163,15 @@ class SentryOptions {
159163

160164
set debug(bool newValue) {
161165
_debug = newValue;
162-
// ignore: deprecated_member_use_from_same_package
163-
if (_debug == true && logger == noOpLogger) {
164-
_logger = _debugLogger;
166+
if (_debug == true &&
167+
// ignore: deprecated_member_use_from_same_package
168+
(logger == noOpLogger || diagnosticLogger?.logger == noOpLogger)) {
169+
logger = debugLogger;
165170
}
166-
if (_debug == false && logger == _debugLogger) {
171+
if (_debug == false &&
172+
(logger == debugLogger || diagnosticLogger?.logger == debugLogger)) {
167173
// ignore: deprecated_member_use_from_same_package
168-
_logger = noOpLogger;
174+
logger = noOpLogger;
169175
}
170176
}
171177

@@ -583,7 +589,8 @@ class SentryOptions {
583589
late SentryStackTraceFactory stackTraceFactory =
584590
SentryStackTraceFactory(this);
585591

586-
void _debugLogger(
592+
@visibleForTesting
593+
void debugLogger(
587594
SentryLevel level,
588595
String message, {
589596
String? logger,

dart/test/diagnostic_logger_test.dart

+22-20
Original file line numberDiff line numberDiff line change
@@ -11,37 +11,39 @@ void main() {
1111
fixture = Fixture();
1212
});
1313

14-
test('$DiagnosticLogger do not log if debug is disabled', () {
15-
fixture.options.debug = false;
14+
group(DiagnosticLogger, () {
15+
test('does not log if debug is disabled', () {
16+
fixture.options.debug = false;
1617

17-
fixture.getSut().log(SentryLevel.error, 'foobar');
18+
fixture.getSut().log(SentryLevel.error, 'foobar');
1819

19-
expect(fixture.loggedMessage, isNull);
20-
});
20+
expect(fixture.loggedMessage, isNull);
21+
});
2122

22-
test('$DiagnosticLogger log if debug is enabled', () {
23-
fixture.options.debug = true;
23+
test('logs if debug is enabled', () {
24+
fixture.options.debug = true;
2425

25-
fixture.getSut().log(SentryLevel.error, 'foobar');
26+
fixture.getSut().log(SentryLevel.error, 'foobar');
2627

27-
expect(fixture.loggedMessage, 'foobar');
28-
});
28+
expect(fixture.loggedMessage, 'foobar');
29+
});
2930

30-
test('$DiagnosticLogger do not log if level is too low', () {
31-
fixture.options.debug = true;
32-
fixture.options.diagnosticLevel = SentryLevel.error;
31+
test('does not log if level is too low', () {
32+
fixture.options.debug = true;
33+
fixture.options.diagnosticLevel = SentryLevel.error;
3334

34-
fixture.getSut().log(SentryLevel.warning, 'foobar');
35+
fixture.getSut().log(SentryLevel.warning, 'foobar');
3536

36-
expect(fixture.loggedMessage, isNull);
37-
});
37+
expect(fixture.loggedMessage, isNull);
38+
});
3839

39-
test('$DiagnosticLogger always log fatal', () {
40-
fixture.options.debug = false;
40+
test('always logs fatal', () {
41+
fixture.options.debug = false;
4142

42-
fixture.getSut().log(SentryLevel.fatal, 'foobar');
43+
fixture.getSut().log(SentryLevel.fatal, 'foobar');
4344

44-
expect(fixture.loggedMessage, 'foobar');
45+
expect(fixture.loggedMessage, 'foobar');
46+
});
4547
});
4648
}
4749

dart/test/sentry_options_test.dart

+22-5
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,5 @@
1+
// ignore_for_file: deprecated_member_use_from_same_package
2+
13
import 'package:http/http.dart';
24
import 'package:sentry/sentry.dart';
35
import 'package:sentry/src/noop_client.dart';
@@ -35,15 +37,32 @@ void main() {
3537

3638
test('SentryLogger sets a diagnostic logger', () {
3739
final options = defaultTestOptions();
38-
// ignore: deprecated_member_use_from_same_package
3940
expect(options.logger, noOpLogger);
40-
// ignore: deprecated_member_use_from_same_package
4141
options.logger = dartLogger;
4242

43-
// ignore: deprecated_member_use_from_same_package
4443
expect(options.logger, isNot(noOpLogger));
4544
});
4645

46+
test('setting debug correctly sets logger', () {
47+
final options = defaultTestOptions();
48+
expect(options.logger, noOpLogger);
49+
expect(options.diagnosticLogger, isNull);
50+
options.debug = true;
51+
expect(options.logger, isNot(options.debugLogger));
52+
expect(options.diagnosticLogger!.logger, options.debugLogger);
53+
expect(options.logger, options.diagnosticLogger!.log);
54+
55+
options.debug = false;
56+
expect(options.logger, isNot(noOpLogger));
57+
expect(options.diagnosticLogger!.logger, noOpLogger);
58+
expect(options.logger, options.diagnosticLogger!.log);
59+
60+
options.debug = true;
61+
expect(options.logger, isNot(options.debugLogger));
62+
expect(options.diagnosticLogger!.logger, options.debugLogger);
63+
expect(options.logger, options.diagnosticLogger!.log);
64+
});
65+
4766
test('tracesSampler is null by default', () {
4867
final options = defaultTestOptions();
4968

@@ -112,15 +131,13 @@ void main() {
112131

113132
test('when enableTracing is set to true tracing is considered enabled', () {
114133
final options = SentryOptions.empty();
115-
// ignore: deprecated_member_use_from_same_package
116134
options.enableTracing = true;
117135

118136
expect(options.isTracingEnabled(), true);
119137
});
120138

121139
test('when enableTracing is set to false tracing is considered disabled', () {
122140
final options = SentryOptions.empty();
123-
// ignore: deprecated_member_use_from_same_package
124141
options.enableTracing = false;
125142
options.tracesSampleRate = 1.0;
126143
options.tracesSampler = (_) {

dart/test/sentry_test.dart

+8-6
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,5 @@
1+
// ignore_for_file: deprecated_member_use_from_same_package
2+
13
import 'dart:async';
24

35
import 'package:sentry/sentry.dart';
@@ -478,18 +480,18 @@ void main() {
478480
(options) {
479481
options.dsn = fakeDsn;
480482
options.debug = true;
481-
// ignore: deprecated_member_use_from_same_package
482-
expect(options.logger, isNot(noOpLogger));
483+
expect(options.diagnosticLogger?.logger, isNot(noOpLogger));
483484

484485
options.debug = false;
485-
// ignore: deprecated_member_use_from_same_package
486-
expect(options.logger, noOpLogger);
486+
expect(options.diagnosticLogger?.logger, noOpLogger);
487+
488+
options.debug = true;
489+
expect(options.diagnosticLogger?.logger, isNot(noOpLogger));
487490
},
488491
options: sentryOptions,
489492
);
490493

491-
// ignore: deprecated_member_use_from_same_package
492-
expect(sentryOptions.logger, isNot(dartLogger));
494+
expect(sentryOptions.diagnosticLogger?.logger, isNot(noOpLogger));
493495
});
494496

495497
group('Sentry init optionsConfiguration', () {

flutter/lib/src/screenshot/recorder.dart

+2-2
Original file line numberDiff line numberDiff line change
@@ -2,10 +2,10 @@ import 'dart:async';
22
import 'dart:developer';
33
import 'dart:ui';
44

5+
import 'package:flutter/cupertino.dart' as cupertino;
6+
import 'package:flutter/material.dart' as material;
57
import 'package:flutter/rendering.dart';
68
import 'package:flutter/widgets.dart' as widgets;
7-
import 'package:flutter/material.dart' as material;
8-
import 'package:flutter/cupertino.dart' as cupertino;
99
import 'package:meta/meta.dart';
1010

1111
import '../../sentry_flutter.dart';

flutter/test/mocks.mocks.dart

+23-1
Original file line numberDiff line numberDiff line change
@@ -2020,12 +2020,16 @@ class MockWidgetsFlutterBinding extends _i1.Mock
20202020
int scheduleFrameCallback(
20212021
_i21.FrameCallback? callback, {
20222022
bool? rescheduling = false,
2023+
bool? scheduleNewFrame = true,
20232024
}) =>
20242025
(super.noSuchMethod(
20252026
Invocation.method(
20262027
#scheduleFrameCallback,
20272028
[callback],
2028-
{#rescheduling: rescheduling},
2029+
{
2030+
#rescheduling: rescheduling,
2031+
#scheduleNewFrame: scheduleNewFrame,
2032+
},
20292033
),
20302034
returnValue: 0,
20312035
) as int);
@@ -2303,6 +2307,24 @@ class MockWidgetsFlutterBinding extends _i1.Mock
23032307
returnValueForMissingStub: null,
23042308
);
23052309

2310+
@override
2311+
void addSemanticsActionListener(
2312+
_i8.ValueSetter<_i6.SemanticsActionEvent>? listener,
2313+
) =>
2314+
super.noSuchMethod(
2315+
Invocation.method(#addSemanticsActionListener, [listener]),
2316+
returnValueForMissingStub: null,
2317+
);
2318+
2319+
@override
2320+
void removeSemanticsActionListener(
2321+
_i8.ValueSetter<_i6.SemanticsActionEvent>? listener,
2322+
) =>
2323+
super.noSuchMethod(
2324+
Invocation.method(#removeSemanticsActionListener, [listener]),
2325+
returnValueForMissingStub: null,
2326+
);
2327+
23062328
@override
23072329
_i12.SemanticsHandle ensureSemantics() => (super.noSuchMethod(
23082330
Invocation.method(#ensureSemantics, []),

0 commit comments

Comments
 (0)