diff --git a/analysis_options.yaml b/analysis_options.yaml index b5ccc6e..a0c7a7f 100644 --- a/analysis_options.yaml +++ b/analysis_options.yaml @@ -1,17 +1,10 @@ analyzer: - strong-mode: - implicit-casts: false - implicit-dynamic: false - errors: unused_element: error unused_import: error unused_local_variable: error dead_code: error - enable-experiment: - - non-nullable - linter: rules: # errors @@ -24,9 +17,7 @@ linter: - control_flow_in_finally - empty_statements - hash_and_equals - - invariant_booleans - - iterable_contains_unrelated_type - - list_remove_unrelated_type + - collection_methods_unrelated_type - literal_only_boolean_expressions - no_adjacent_strings_in_list - no_duplicate_case_values @@ -90,7 +81,6 @@ linter: - prefer_const_literals_to_create_immutables # - prefer_constructors_over_static_methods - prefer_contains - - prefer_equal_for_default_values - prefer_expression_function_bodies - prefer_final_fields - prefer_final_locals diff --git a/example/complex_example.dart b/example/complex_example.dart index 211f1df..be7b48b 100644 --- a/example/complex_example.dart +++ b/example/complex_example.dart @@ -36,7 +36,7 @@ Future main() async { const Str('mime', 'image/png'), }); - final tracer = context.trace('Uploading!', level: Level.info); + final tracer = context.startTimer('Uploading!', level: Level.info); // Emulate uploading, wait for 1 sec. await Future.delayed(const Duration(seconds: 1)); diff --git a/example/console_example.dart b/example/console_example.dart index 0fd6dd8..f798ead 100644 --- a/example/console_example.dart +++ b/example/console_example.dart @@ -18,7 +18,7 @@ Future main() async { const Str('mime', 'image/png'), }); - final tracer = context.trace('Uploading!', level: Level.info); + final tracer = context.startTimer('Uploading!', level: Level.info); // Emulate uploading, wait for 1 sec. await Future.delayed(const Duration(seconds: 1)); diff --git a/lib/global_logger.dart b/lib/global_logger.dart index 3292cfa..66bfc89 100644 --- a/lib/global_logger.dart +++ b/lib/global_logger.dart @@ -51,11 +51,11 @@ void log(Level level, String message) => _logger.log(level, message); void debug(String message) => _logger.debug(message); /// Starts tracing and emits a record with [message] and [level] -/// severity level; to stop tracing call [Tracer.stop] on the returned tracer. +/// severity level; to stop tracing call [Timer.stop] on the returned tracer. /// -/// See more [Interface.trace]. -Tracer trace(String message, {Level level = Level.debug}) => - _logger.trace(message, level: level); +/// See more [Interface.startTimer]. +Timer trace(String message, {Level level = Level.debug}) => + _logger.startTimer(message, level: level); /// Emits a record with [message] and [Level.info] severity level. /// diff --git a/lib/jetlog.dart b/lib/jetlog.dart index 3371255..422f341 100644 --- a/lib/jetlog.dart +++ b/lib/jetlog.dart @@ -29,4 +29,4 @@ export 'src/interface.dart'; export 'src/level.dart'; export 'src/logger.dart'; export 'src/record.dart'; -export 'src/tracer.dart'; +export 'src/timer.dart'; diff --git a/lib/src/field.dart b/lib/src/field.dart index fff67fb..7499b1f 100644 --- a/lib/src/field.dart +++ b/lib/src/field.dart @@ -22,7 +22,7 @@ typedef ValueProducer = V Function(); /// [FieldKind] represents a [Field.value] type. It is used for [Field] /// serialization to remove necessity to dynamically probe [Field.value] type. -class FieldKind { +final class FieldKind { const FieldKind(this.value); /// Unique value for type. @@ -55,7 +55,7 @@ class FieldKind { } /// A [Field] used to add a key-value pair to a logger's context. -abstract class Field { +abstract interface class Field { /// Creates a new [Field] with [name] and [value]. const factory Field( {required String name, @@ -85,7 +85,7 @@ abstract class Field { FieldKind get kind; } -class _StaticField implements Field { +base class _StaticField implements Field { const _StaticField( {required this.name, required this.value, required this.kind}); @@ -105,7 +105,7 @@ class _StaticField implements Field { bool operator ==(Object other) => other is Field && other.name == name; } -class _LazyField implements Field { +base class _LazyField implements Field { _LazyField({required this.name, required this.producer, required this.kind}); V? _value; diff --git a/lib/src/fields/bool.dart b/lib/src/fields/bool.dart index 7a16dbe..a587a19 100644 --- a/lib/src/fields/bool.dart +++ b/lib/src/fields/bool.dart @@ -1,12 +1,12 @@ part of jetlog.fields; -class _StaticBool extends _StaticField implements Bool { +final class _StaticBool extends _StaticField implements Bool { // ignore:avoid_positional_boolean_parameters const _StaticBool(String name, bool? value) : super(name: name, value: value, kind: FieldKind.boolean); } -class _LazyBool extends _LazyField implements Bool { +final class _LazyBool extends _LazyField implements Bool { _LazyBool(String name, ValueProducer producer) : super(name: name, producer: producer, kind: FieldKind.boolean); } diff --git a/lib/src/fields/double.dart b/lib/src/fields/double.dart index 35ecef0..d98b6e4 100644 --- a/lib/src/fields/double.dart +++ b/lib/src/fields/double.dart @@ -1,11 +1,11 @@ part of jetlog.fields; -class _StaticDouble extends _StaticField implements Double { +final class _StaticDouble extends _StaticField implements Double { const _StaticDouble(String name, double? value) : super(name: name, value: value, kind: FieldKind.double); } -class _LazyDouble extends _LazyField implements Double { +final class _LazyDouble extends _LazyField implements Double { _LazyDouble(String name, ValueProducer producer) : super(name: name, producer: producer, kind: FieldKind.double); } diff --git a/lib/src/fields/dtm.dart b/lib/src/fields/dtm.dart index dbf31be..3ff7a61 100644 --- a/lib/src/fields/dtm.dart +++ b/lib/src/fields/dtm.dart @@ -1,11 +1,11 @@ part of jetlog.fields; -class _StaticDTM extends _StaticField implements DTM { +final class _StaticDTM extends _StaticField implements DTM { const _StaticDTM(String name, DateTime? value) : super(name: name, value: value, kind: FieldKind.dateTime); } -class _LazyDTM extends _LazyField implements DTM { +final class _LazyDTM extends _LazyField implements DTM { _LazyDTM(String name, ValueProducer producer) : super(name: name, producer: producer, kind: FieldKind.dateTime); } diff --git a/lib/src/fields/dur.dart b/lib/src/fields/dur.dart index bdd509a..1af1308 100644 --- a/lib/src/fields/dur.dart +++ b/lib/src/fields/dur.dart @@ -1,11 +1,11 @@ part of jetlog.fields; -class _StaticDur extends _StaticField implements Dur { +final class _StaticDur extends _StaticField implements Dur { const _StaticDur(String name, Duration? value) : super(name: name, value: value, kind: FieldKind.duration); } -class _LazyDur extends _LazyField implements Dur { +final class _LazyDur extends _LazyField implements Dur { _LazyDur(String name, ValueProducer producer) : super(name: name, producer: producer, kind: FieldKind.duration); } diff --git a/lib/src/fields/int.dart b/lib/src/fields/int.dart index 0ac9e97..8bf8c65 100644 --- a/lib/src/fields/int.dart +++ b/lib/src/fields/int.dart @@ -1,11 +1,11 @@ part of jetlog.fields; -class _StaticInt extends _StaticField implements Int { +final class _StaticInt extends _StaticField implements Int { const _StaticInt(String name, int? value) : super(name: name, value: value, kind: FieldKind.integer); } -class _LazyInt extends _LazyField implements Int { +final class _LazyInt extends _LazyField implements Int { _LazyInt(String name, ValueProducer producer) : super(name: name, producer: producer, kind: FieldKind.integer); } diff --git a/lib/src/fields/num.dart b/lib/src/fields/num.dart index 0ebc29c..20d7024 100644 --- a/lib/src/fields/num.dart +++ b/lib/src/fields/num.dart @@ -1,11 +1,11 @@ part of jetlog.fields; -class _StaticNum extends _StaticField implements Num { +final class _StaticNum extends _StaticField implements Num { const _StaticNum(String name, num? value) : super(name: name, value: value, kind: FieldKind.number); } -class _LazyNum extends _LazyField implements Num { +final class _LazyNum extends _LazyField implements Num { _LazyNum(String name, ValueProducer producer) : super(name: name, producer: producer, kind: FieldKind.number); } diff --git a/lib/src/fields/obj.dart b/lib/src/fields/obj.dart index ae5af61..7495332 100644 --- a/lib/src/fields/obj.dart +++ b/lib/src/fields/obj.dart @@ -1,11 +1,11 @@ part of jetlog.fields; -class _StaticObj extends _StaticField?> implements Obj { +final class _StaticObj extends _StaticField?> implements Obj { _StaticObj(String name, Loggable? value) : super(name: name, value: value?.toFields(), kind: FieldKind.object); } -class _LazyObj extends _LazyField?> implements Obj { +final class _LazyObj extends _LazyField?> implements Obj { _LazyObj(String name, ValueProducer?> producer) : super(name: name, producer: producer, kind: FieldKind.object); } diff --git a/lib/src/fields/str.dart b/lib/src/fields/str.dart index 11d16e1..2f07a4d 100644 --- a/lib/src/fields/str.dart +++ b/lib/src/fields/str.dart @@ -1,11 +1,11 @@ part of jetlog.fields; -class _StaticStr extends _StaticField implements Str { +final class _StaticStr extends _StaticField implements Str { const _StaticStr(String name, String? value) : super(name: name, value: value, kind: FieldKind.string); } -class _LazyStr extends _LazyField implements Str { +final class _LazyStr extends _LazyField implements Str { _LazyStr(String name, ValueProducer producer) : super(name: name, producer: producer, kind: FieldKind.string); } diff --git a/lib/src/formatters/text_formatter.dart b/lib/src/formatters/text_formatter.dart index 970412f..a552ac2 100644 --- a/lib/src/formatters/text_formatter.dart +++ b/lib/src/formatters/text_formatter.dart @@ -118,7 +118,9 @@ class TextFormatter with FormatterBase { for (final field in fields) { final handler = getFieldFormatter(field.kind); - buffer..write(handler(field))..write(' '); + buffer + ..write(handler(field)) + ..write(' '); } return buffer.toString().trim(); diff --git a/lib/src/interface.dart b/lib/src/interface.dart index 7a0a0fc..de6b21e 100644 --- a/lib/src/interface.dart +++ b/lib/src/interface.dart @@ -1,11 +1,11 @@ import 'package:jetlog/src/field.dart' show Field; import 'package:jetlog/src/level.dart'; import 'package:jetlog/src/logger.dart'; -import 'package:jetlog/src/tracer.dart'; +import 'package:jetlog/src/timer.dart'; /// [Interface] represents a set of common methods that is implemented by both /// [Logger] and logging context returned by [Interface.bind]. -abstract class Interface { +abstract interface class Interface { /// Emits a record with [message] and [level] severity level. /// /// If [level] is either [Level.all] or [Level.off] it will immediately @@ -13,8 +13,8 @@ abstract class Interface { void log(Level level, String message); /// Starts tracing and emits a record with [message] and [level] - /// severity level; to stop tracing call [Tracer.stop] on the returned tracer. - Tracer trace(String message, {Level level = Level.debug}); + /// severity level; to stop tracing call [Timer.stop] on the returned timer. + Timer startTimer(String message, {Level level = Level.debug}); /// Creates and returns a new logging context with bound collection of /// [fields] added to existing one. @@ -27,12 +27,12 @@ abstract class Interface { /// Str('mime', 'image/png'), /// }); /// - /// final tracer = context.trace('Uploading!', Level.info); + /// final timer = context.startTimer('Uploading!', Level.info); /// /// // Emulate uploading, wait for 1 sec. /// await Future.delayed(const Duration(seconds: 1)); /// - /// tracer.stop('Aborting...'); + /// timer.stop('Aborting...'); /// context.fatal('Failed to upload!'); /// ``` /// diff --git a/lib/src/level.dart b/lib/src/level.dart index c0556a9..7ada209 100644 --- a/lib/src/level.dart +++ b/lib/src/level.dart @@ -19,7 +19,7 @@ import 'package:jetlog/src/record.dart'; /// and does not overlap with `0x100`, `0x200`, `0x300`, `0x400`, `0x500` and /// `0x600` reserved for [debug], [info], [warning], [danger] and [fatal] /// levels respectively. -class Level implements Comparable { +final class Level implements Comparable { const Level({required this.name, required this.value}); /// User-readable name of this severity level. diff --git a/lib/src/logger.dart b/lib/src/logger.dart index 93ad9e7..3387337 100644 --- a/lib/src/logger.dart +++ b/lib/src/logger.dart @@ -42,7 +42,7 @@ final _loggers = LoggerManager(_root); /// data represented as a collection of [Field]s. Calling to [Logger.bind] will /// result into a new context with logging capabilities and bound collection of /// fields has been created. -abstract class Logger implements Interface { +abstract interface class Logger implements Interface { /// Creates a new detached logger. /// /// Created logger has no parent and children and is not a part of @@ -112,7 +112,7 @@ abstract class Logger implements Interface { /// Base mixin for implementing [Logger]. /// /// Contains default implementations of common methods across loggers. -mixin LoggerBase implements Logger { +base mixin LoggerBase implements Logger { @override @pragma('vm:prefer-inline') bool isEnabledFor(Level level) { diff --git a/lib/src/logger_impl.dart b/lib/src/logger_impl.dart index a4daa72..f08ca58 100644 --- a/lib/src/logger_impl.dart +++ b/lib/src/logger_impl.dart @@ -8,9 +8,9 @@ import 'package:jetlog/src/level.dart'; import 'package:jetlog/src/logger.dart'; import 'package:jetlog/src/logging_context.dart'; import 'package:jetlog/src/record.dart'; -import 'package:jetlog/src/tracer.dart'; +import 'package:jetlog/src/timer.dart'; -class LoggerImpl with LoggerBase { +final class LoggerImpl with LoggerBase { LoggerImpl._(this.name, [this.children]) { _context = LoggingContext(this); } @@ -70,8 +70,8 @@ class LoggerImpl with LoggerBase { void log(Level level, String message) => _context.log(level, message); @override - Tracer trace(String message, {Level level = Level.debug}) => - _context.trace(message, level: level); + Timer startTimer(String message, {Level level = Level.debug}) => + _context.startTimer(message, level: level); @override @pragma('vm:prefer-inline') @@ -84,10 +84,16 @@ class LoggerImpl with LoggerBase { buffer.write('Logger('); if (name != null) { - buffer..write('name=')..write(name)..write(', '); + buffer + ..write('name=') + ..write(name) + ..write(', '); } - buffer..write('level=')..write(level.name)..write(')'); + buffer + ..write('level=') + ..write(level.name) + ..write(')'); return buffer.toString(); } diff --git a/lib/src/logger_manager.dart b/lib/src/logger_manager.dart index 5587747..0799485 100644 --- a/lib/src/logger_manager.dart +++ b/lib/src/logger_manager.dart @@ -1,6 +1,6 @@ import 'package:jetlog/src/logger_impl.dart'; -class LoggerManager { +final class LoggerManager { LoggerManager(this.root) : _loggers = {}; final Map _loggers; diff --git a/lib/src/logging_context.dart b/lib/src/logging_context.dart index dfe2afd..e3ad4db 100644 --- a/lib/src/logging_context.dart +++ b/lib/src/logging_context.dart @@ -3,14 +3,14 @@ import 'package:jetlog/src/interface.dart'; import 'package:jetlog/src/level.dart'; import 'package:jetlog/src/logger_impl.dart'; import 'package:jetlog/src/record_impl.dart'; -import 'package:jetlog/src/tracer.dart'; -import 'package:jetlog/src/tracer_impl.dart'; +import 'package:jetlog/src/timer.dart'; +import 'package:jetlog/src/timer_impl.dart'; class LoggingContext implements Interface { - LoggingContext(this._logger, [this._fields]); + LoggingContext(this._logger, [this._fields = const {}]); final LoggerImpl _logger; - final Set? _fields; + final Set _fields; @override void log(Level level, String message) { @@ -30,10 +30,10 @@ class LoggingContext implements Interface { @pragma('vm:prefer-inline') Interface bind([Iterable? fields]) => LoggingContext(_logger, { ...?fields, - ...?_fields, + ..._fields, }); @override - Tracer trace(String message, {Level level = Level.debug}) => - TracerImpl(this, level)..start(message); + Timer startTimer(String message, {Level level = Level.debug}) => + TimerImpl(this, level)..start(message); } diff --git a/lib/src/noop_logger.dart b/lib/src/noop_logger.dart index 0f25f5a..de4b105 100644 --- a/lib/src/noop_logger.dart +++ b/lib/src/noop_logger.dart @@ -1,24 +1,24 @@ import 'package:jetlog/src/field.dart' show Field; import 'package:jetlog/src/filter.dart'; import 'package:jetlog/src/handler.dart'; +import 'package:jetlog/src/interface.dart'; import 'package:jetlog/src/level.dart'; import 'package:jetlog/src/logger.dart'; -import 'package:jetlog/src/interface.dart'; -import 'package:jetlog/src/tracer.dart'; +import 'package:jetlog/src/timer.dart'; -class NoopTracer implements Tracer { +final class NoopTimer implements Timer { @override @pragma('vm:prefer-inline') void stop(String message, {Level? level, Iterable? fields}) {} } -class NoopLogger with LoggerBase { +final class NoopLogger with LoggerBase { NoopLogger([this.name]); Level? _level; static final NoopLogger _logger = NoopLogger(); - static final NoopTracer _tracer = NoopTracer(); + static final NoopTimer _timer = NoopTimer(); @override set level(Level? level) { @@ -46,7 +46,7 @@ class NoopLogger with LoggerBase { } @override - Tracer trace(String message, {Level level = Level.debug}) => _tracer; + Timer startTimer(String message, {Level level = Level.debug}) => _timer; @override void log(Level level, String message) { @@ -60,10 +60,16 @@ class NoopLogger with LoggerBase { buffer.write('NoopLogger('); if (name != null) { - buffer..write('name=')..write(name)..write(', '); + buffer + ..write('name=') + ..write(name) + ..write(', '); } - buffer..write('level=')..write(level.name)..write(')'); + buffer + ..write('level=') + ..write(level.name) + ..write(')'); return buffer.toString(); } diff --git a/lib/src/record.dart b/lib/src/record.dart index 41b9b43..92bf175 100644 --- a/lib/src/record.dart +++ b/lib/src/record.dart @@ -3,7 +3,7 @@ import 'package:jetlog/src/level.dart'; import 'package:jetlog/src/logger.dart'; /// A single record emitted by a [Logger]. -abstract class Record { +abstract interface class Record { /// Severity level of this record. Level get level; diff --git a/lib/src/tracer.dart b/lib/src/timer.dart similarity index 77% rename from lib/src/tracer.dart rename to lib/src/timer.dart index ce3629a..eeb31a8 100644 --- a/lib/src/tracer.dart +++ b/lib/src/timer.dart @@ -2,9 +2,9 @@ import 'package:jetlog/src/field.dart' show Field; import 'package:jetlog/src/interface.dart'; import 'package:jetlog/src/level.dart' show Level; -/// Tracer is used to measure time between [Interface.trace] and [Tracer.stop] +/// [Timer] is used to measure time between [Interface.startTimer] and [Timer.stop] /// calls. -abstract class Tracer { +abstract interface class Timer { /// Stops tracing; immediately emits a record with a [message] and /// measured time. /// diff --git a/lib/src/timer_impl.dart b/lib/src/timer_impl.dart new file mode 100644 index 0000000..b9079d8 --- /dev/null +++ b/lib/src/timer_impl.dart @@ -0,0 +1,65 @@ +import 'package:jetlog/src/field.dart' show Field, Dur, DTM; +import 'package:jetlog/src/interface.dart'; +import 'package:jetlog/src/level.dart'; +import 'package:jetlog/src/timer.dart'; + +class TimerImpl implements Timer { + TimerImpl(this._context, [this._level = Level.debug]) + : _stopwatch = Stopwatch(); + + late final DateTime startedAt; + late final DateTime stoppedAt; + Interface _context; + bool _startGuard = false; + + final Stopwatch _stopwatch; + final Level _level; + + @pragma('vm:prefer-inline') + void start(String message) { + // Prevent multiple calls to [start]. + if (_startGuard) return; + _startGuard = true; + + startedAt = DateTime.now(); + _context = _context.bind({DTM('started_at', startedAt)}) + ..log(_level, message); + + _stopwatch.start(); + } + + @override + void stop(String message, {Level? level, Iterable? fields}) { + if (_stopwatch.isRunning) { + _stopwatch.stop(); + stoppedAt = startedAt.add(_stopwatch.elapsed); + _context.bind({ + Dur('duration', _stopwatch.elapsed), + DTM('stopped_at', stoppedAt), + ...?fields + }).log(level ?? _level, message); + } + } + + @override + String toString() { + final buffer = StringBuffer(); + + buffer + ..write('Timer(') + ..write('level=') + ..write(_level) + ..write(' ') + ..write('isRunning=') + ..write(_stopwatch.isRunning) + ..write(' ') + ..write('startedAt=') + ..write(startedAt.toString()) + ..write(' ') + ..write('stoppedAt=') + ..write(stoppedAt.toString()) + ..write(')'); + + return buffer.toString(); + } +} diff --git a/lib/src/tracer_impl.dart b/lib/src/tracer_impl.dart deleted file mode 100644 index 1605d37..0000000 --- a/lib/src/tracer_impl.dart +++ /dev/null @@ -1,57 +0,0 @@ -import 'package:jetlog/src/field.dart' show Field, Dur, DTM; -import 'package:jetlog/src/interface.dart'; -import 'package:jetlog/src/level.dart'; -import 'package:jetlog/src/tracer.dart'; - -class TracerImpl implements Tracer { - TracerImpl(this._context, [this._level = Level.debug]) : _timer = Stopwatch(); - - late final DateTime startAt; - DateTime? stopAt; - Interface _context; - - final Stopwatch _timer; - final Level _level; - - @pragma('vm:prefer-inline') - void start(String message) { - startAt = DateTime.now(); - _context = _context.bind({DTM('start', startAt)})..log(_level, message); - - _timer.start(); - } - - @override - void stop(String message, {Level? level, Iterable? fields}) { - if (_timer.isRunning) { - _timer.stop(); - stopAt = DateTime.now(); - _context.bind({ - Dur('duration', _timer.elapsed), - if (fields != null) ...fields - }).log(level ?? _level, message); - } - } - - @override - String toString() { - final buffer = StringBuffer(); - - buffer - ..write('Tracer(') - ..write('level=') - ..write(_level) - ..write(' ') - ..write('isRunning=') - ..write(_timer.isRunning) - ..write(' ') - ..write('startAt=') - ..write(startAt.toString()) - ..write(' ') - ..write('stopAt=') - ..write(stopAt.toString()) - ..write(')'); - - return buffer.toString(); - } -} diff --git a/pubspec.yaml b/pubspec.yaml index 05a6630..62abfb6 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -10,10 +10,10 @@ description: > homepage: https://github.com/vanesyan/jetlog.dart environment: - sdk: '>=2.12.0 <3.0.0' + sdk: '>=3.0.0 <4.0.0' dependencies: - meta: ^1.3.0 + meta: ^1.11.0 dev_dependencies: - test: ^1.16.7 + test: ^1.24.9 diff --git a/test/interface_test.dart b/test/interface_test.dart index f20aa85..4c22366 100644 --- a/test/interface_test.dart +++ b/test/interface_test.dart @@ -99,7 +99,7 @@ void main() { logger ..debug('debug') - ..trace('trace') + ..startTimer('trace') ..info('info') ..warning('warning') ..danger('danger') @@ -574,7 +574,7 @@ void main() { group('#trace', () { test('returns a non-null tracer', () async { final logger = Logger.detached(); - final trace = logger.trace('Trace'); + final trace = logger.startTimer('Trace'); expect(trace, isNotNull); }); @@ -585,7 +585,7 @@ void main() { ..level = Level.all ..handler = handler; - final tracer = logger.trace('start trace'); + final tracer = logger.startTimer('start trace'); tracer.stop('stop trace'); await later(() { @@ -601,7 +601,7 @@ void main() { ..level = Level.all ..handler = handler; - logger.trace('start').stop('stop'); + logger.startTimer('start').stop('stop'); await later(() { final records = handler.records; @@ -616,7 +616,7 @@ void main() { ..level = Level.all ..handler = handler; - logger.trace('start').stop('stop'); + logger.startTimer('start').stop('stop'); await later(() { final records = handler.records; @@ -643,7 +643,7 @@ void main() { ..handler = handler ..level = Level.all; - logger.trace('start', level: Level.fatal).stop('stop'); + logger.startTimer('start', level: Level.fatal).stop('stop'); await later(() { expect(handler.records.first.level == Level.fatal, isTrue); @@ -652,7 +652,7 @@ void main() { test('ignores further tracer stop calls after the first one', () { final logger = Logger.detached()..level = Level.all; - final t = logger.trace('start')..stop('stop'); + final t = logger.startTimer('start')..stop('stop'); expect(() => t.stop('stop 2'), returnsNormally); expect(() => t.stop('stop 3'), returnsNormally); @@ -667,7 +667,7 @@ void main() { ..level = Level.all; const fields = [Str('test1', 'test1'), Str('test2', 'test2')]; - logger.trace('start').stop('stop', fields: fields); + logger.startTimer('start').stop('stop', fields: fields); await later(() { final record = handler.records.elementAt(1); @@ -681,7 +681,7 @@ void main() { ..handler = handler ..level = Level.all; - logger.trace('start').stop('stop', level: Level.fatal); + logger.startTimer('start').stop('stop', level: Level.fatal); await later(() { final record = handler.records.elementAt(1); diff --git a/test/logger_test.dart b/test/logger_test.dart index e00af66..6acc395 100644 --- a/test/logger_test.dart +++ b/test/logger_test.dart @@ -183,7 +183,7 @@ void main() { expect(() => l.log(Level.info, 'test'), returnsNormally); expect(() => l.debug('test'), returnsNormally); - expect(() => l.trace('test'), returnsNormally); + expect(() => l.startTimer('test'), returnsNormally); expect(() => l.info('test'), returnsNormally); expect(() => l.warning('test'), returnsNormally); expect(() => l.danger('test'), returnsNormally); @@ -194,13 +194,13 @@ void main() { expect(() => b.log(Level.info, 'bind test'), returnsNormally); expect(() => b.debug('bind test'), returnsNormally); - expect(() => l.trace('test'), returnsNormally); + expect(() => l.startTimer('test'), returnsNormally); expect(() => b.info('bind test'), returnsNormally); expect(() => b.warning('bind test'), returnsNormally); expect(() => b.danger('bind test'), returnsNormally); expect(() => b.fatal('bind test'), returnsNormally); - final t = l.trace('test trace'); + final t = l.startTimer('test trace'); expect(() => t.stop('test trace'), returnsNormally); }); diff --git a/test/tracer_test.dart b/test/tracer_test.dart index 45e718a..641c5a1 100644 --- a/test/tracer_test.dart +++ b/test/tracer_test.dart @@ -7,7 +7,7 @@ void main() { group('#toString', () { test('returns correct string representation', () { final l = Logger.detached(); - final t = l.trace('start') as TracerImpl; + final t = l.startTimer('start') as TracerImpl; expect( t.toString(),