Skip to content

Commit a2ea1e9

Browse files
authored
Remove mut self reference from LogExporter::export() method. (open-telemetry#2380)
1 parent cb3d024 commit a2ea1e9

File tree

1 file changed

+25
-11
lines changed

1 file changed

+25
-11
lines changed

logs.rs

Lines changed: 25 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -6,26 +6,38 @@
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

1212
use opentelemetry::InstrumentationScope;
1313
use 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};
1516
use tracing::error;
1617
use tracing_subscriber::prelude::*;
1718

1819
mod 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 {
4052
fn 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

Comments
 (0)