File tree Expand file tree Collapse file tree 2 files changed +44
-0
lines changed
Expand file tree Collapse file tree 2 files changed +44
-0
lines changed Original file line number Diff line number Diff line change @@ -14,6 +14,7 @@ export 'sdk/logs/processors/log_record_processor.dart' show LogRecordProcessor;
1414export 'sdk/logs/processors/noop_log_processor.dart' show NoopLogRecordProcessor;
1515export 'sdk/logs/processors/batch_log_record_processor.dart' show BatchLogRecordProcessor;
1616export 'sdk/logs/exporters/console_log_record_exporter.dart' show ConsoleLogRecordExporter;
17+ export 'sdk/logs/exporters/inmemory_log_record_exporter.dart' show InMemoryLogRecordExporter;
1718export 'sdk/logs/exporters/log_record_exporter.dart' show LogRecordExporter;
1819export 'sdk/logs/log_record_limit.dart' show LogRecordLimits;
1920export 'sdk/metrics/counter.dart' show Counter;
Original file line number Diff line number Diff line change 1+ // Copyright 2021-2022 Workiva.
2+ // Licensed under the Apache License, Version 2.0. Please see https://github.com/Workiva/opentelemetry-dart/blob/master/LICENSE for more information
3+
4+ import 'package:meta/meta.dart' ;
5+ import 'package:opentelemetry/src/experimental_sdk.dart' as sdk;
6+
7+ /// This class can be used for testing purposes. It stores the exported LogRecords
8+ /// in a list in memory that can be retrieved using the `getFinishedLogRecords()`
9+ /// method.
10+ class InMemoryLogRecordExporter implements sdk.LogRecordExporter {
11+ var _finishedLogRecords = < sdk.ReadableLogRecord > [];
12+
13+ /// Indicates if the exporter has been "shutdown."
14+ /// When false, exported log records will not be stored in-memory.
15+ @protected
16+ bool _stopped = false ;
17+
18+ @override
19+ Future <sdk.ExportResult > export (List <sdk.ReadableLogRecord > logs) async {
20+ if (_stopped) {
21+ return sdk.ExportResult (
22+ code: sdk.ExportResultCode .failed,
23+ error: Exception ('Exporter has been stopped' ),
24+ stackTrace: StackTrace .current,
25+ );
26+ }
27+ _finishedLogRecords.addAll (logs);
28+
29+ return sdk.ExportResult (code: sdk.ExportResultCode .success);
30+ }
31+
32+ @override
33+ Future <void > shutdown () async {
34+ _stopped = true ;
35+ reset ();
36+ }
37+
38+ List <sdk.ReadableLogRecord > get finishedLogRecords => List .unmodifiable (_finishedLogRecords);
39+
40+ void reset () {
41+ _finishedLogRecords = < sdk.ReadableLogRecord > [];
42+ }
43+ }
You can’t perform that action at this time.
0 commit comments