66 ~31 M/sec
77
88 Hardware: AMD EPYC 7763 64-Core Processor - 2.44 GHz, 16vCPUs,
9- ~44 M /sec
9+ ~40 M /sec
1010*/
1111
1212use opentelemetry:: InstrumentationScope ;
1313use opentelemetry_appender_tracing:: layer;
14- use opentelemetry_sdk:: logs:: { LogProcessor , LoggerProvider } ;
14+ use opentelemetry_sdk:: export:: logs:: { LogBatch , LogExporter } ;
15+ use opentelemetry_sdk:: logs:: { LogProcessor , LogRecord , LogResult , LoggerProvider } ;
1516use tracing:: error;
1617use tracing_subscriber:: prelude:: * ;
1718
1819mod throughput;
20+ use async_trait:: async_trait;
21+
22+ #[ derive( Debug , Clone ) ]
23+ struct MockLogExporter ;
24+
25+ #[ async_trait]
26+ impl LogExporter for MockLogExporter {
27+ async fn export ( & self , _: LogBatch < ' _ > ) -> LogResult < ( ) > {
28+ LogResult :: Ok ( ( ) )
29+ }
30+ }
1931
2032#[ derive( Debug ) ]
21- pub struct NoOpLogProcessor ;
22-
23- impl LogProcessor for NoOpLogProcessor {
24- fn emit (
25- & self ,
26- _record : & mut opentelemetry_sdk:: logs:: LogRecord ,
27- _scope : & InstrumentationScope ,
28- ) {
33+ pub struct MockLogProcessor {
34+ exporter : MockLogExporter ,
35+ }
36+
37+ impl LogProcessor for MockLogProcessor {
38+ fn emit ( & self , record : & mut opentelemetry_sdk:: logs:: LogRecord , scope : & InstrumentationScope ) {
39+ let log_tuple = & [ ( record as & LogRecord , scope ) ] ;
40+ let _ = futures_executor :: block_on ( self . exporter . export ( LogBatch :: new ( log_tuple ) ) ) ;
2941 }
3042
3143 fn force_flush ( & self ) -> opentelemetry_sdk:: logs:: LogResult < ( ) > {
@@ -40,7 +52,9 @@ impl LogProcessor for NoOpLogProcessor {
4052fn main ( ) {
4153 // LoggerProvider with a no-op processor.
4254 let provider: LoggerProvider = LoggerProvider :: builder ( )
43- . with_log_processor ( NoOpLogProcessor { } )
55+ . with_log_processor ( MockLogProcessor {
56+ exporter : MockLogExporter { } ,
57+ } )
4458 . build ( ) ;
4559
4660 // Use the OpenTelemetryTracingBridge to test the throughput of the appender-tracing.
0 commit comments