@@ -16,26 +16,62 @@ use opentelemetry::trace::Tracer;
16
16
use opentelemetry:: trace:: TracerProvider as _;
17
17
use opentelemetry:: Key ;
18
18
use opentelemetry_sdk:: export:: logs:: { LogData , LogExporter } ;
19
+ use opentelemetry_sdk:: logs:: LogProcessor ;
19
20
use opentelemetry_sdk:: logs:: { Logger , LoggerProvider } ;
20
21
use opentelemetry_sdk:: trace;
21
22
use opentelemetry_sdk:: trace:: { Sampler , TracerProvider } ;
22
23
23
24
#[ derive( Debug ) ]
24
- struct VoidExporter ;
25
+ struct NoopExporter ;
25
26
26
27
#[ async_trait]
27
- impl LogExporter for VoidExporter {
28
- async fn export < ' a > ( & mut self , _batch : Vec < std:: borrow:: Cow < ' a , LogData > > ) -> LogResult < ( ) > {
28
+ impl LogExporter for NoopExporter {
29
+ async fn export < ' a > ( & mut self , _ : Vec < std:: borrow:: Cow < ' a , LogData > > ) -> LogResult < ( ) > {
29
30
LogResult :: Ok ( ( ) )
30
31
}
31
32
}
32
33
34
+ #[ derive( Debug ) ]
35
+ struct NoopProcessor {
36
+ exporter : Box < dyn LogExporter > ,
37
+ }
38
+
39
+ impl NoopProcessor {
40
+ fn new ( exporter : Box < dyn LogExporter > ) -> Self {
41
+ Self { exporter }
42
+ }
43
+ }
44
+
45
+ impl LogProcessor for NoopProcessor {
46
+ fn emit ( & self , _: & mut LogData ) {
47
+ // no-op
48
+ }
49
+
50
+ fn force_flush ( & self ) -> LogResult < ( ) > {
51
+ Ok ( ( ) )
52
+ }
53
+
54
+ fn shutdown ( & self ) -> LogResult < ( ) > {
55
+ Ok ( ( ) )
56
+ }
57
+
58
+ #[ cfg( feature = "logs_level_enabled" ) ]
59
+ fn event_enabled (
60
+ & self ,
61
+ _level : opentelemetry:: logs:: Severity ,
62
+ _target : & str ,
63
+ _name : & str ,
64
+ ) -> bool {
65
+ true
66
+ }
67
+ }
68
+
33
69
fn log_benchmark_group < F : Fn ( & Logger ) > ( c : & mut Criterion , name : & str , f : F ) {
34
70
let mut group = c. benchmark_group ( name) ;
35
71
36
72
group. bench_function ( "no-context" , |b| {
37
73
let provider = LoggerProvider :: builder ( )
38
- . with_simple_exporter ( VoidExporter )
74
+ . with_log_processor ( NoopProcessor :: new ( Box :: new ( NoopExporter ) ) )
39
75
. build ( ) ;
40
76
41
77
let logger = provider. logger ( "no-context" ) ;
@@ -45,7 +81,7 @@ fn log_benchmark_group<F: Fn(&Logger)>(c: &mut Criterion, name: &str, f: F) {
45
81
46
82
group. bench_function ( "with-context" , |b| {
47
83
let provider = LoggerProvider :: builder ( )
48
- . with_simple_exporter ( VoidExporter )
84
+ . with_log_processor ( NoopProcessor :: new ( Box :: new ( NoopExporter ) ) )
49
85
. build ( ) ;
50
86
51
87
let logger = provider. logger ( "with-context" ) ;
0 commit comments