Skip to content

Commit 6279060

Browse files
authored
fix: Small improvement to OTLP Exporter logs (#3007)
1 parent 167c946 commit 6279060

File tree

6 files changed

+76
-24
lines changed

6 files changed

+76
-24
lines changed

opentelemetry-otlp/src/exporter/http/logs.rs

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -30,20 +30,24 @@ impl LogExporter for OtlpHttpClient {
3030
}
3131

3232
let request_uri = request.uri().to_string();
33-
otel_debug!(name: "HttpLogsClient.CallingExport");
33+
otel_debug!(name: "HttpLogsClient.ExportStarted");
3434
let response = client
3535
.send_bytes(request)
3636
.await
3737
.map_err(|e| OTelSdkError::InternalFailure(format!("{e:?}")))?;
38+
3839
if !response.status().is_success() {
3940
let error = format!(
4041
"OpenTelemetry logs export failed. Url: {}, Status Code: {}, Response: {:?}",
4142
request_uri,
4243
response.status().as_u16(),
4344
response.body()
4445
);
46+
otel_debug!(name: "HttpLogsClient.ExportFailed", error = &error);
4547
return Err(OTelSdkError::InternalFailure(error));
4648
}
49+
50+
otel_debug!(name: "HttpLogsClient.ExportSucceeded");
4751
Ok(())
4852
}
4953

opentelemetry-otlp/src/exporter/http/metrics.rs

Lines changed: 23 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -33,13 +33,30 @@ impl MetricsClient for OtlpHttpClient {
3333
request.headers_mut().insert(k.clone(), v.clone());
3434
}
3535

36-
otel_debug!(name: "HttpMetricsClient.CallingExport");
37-
client
38-
.send_bytes(request)
39-
.await
40-
.map_err(|e| OTelSdkError::InternalFailure(format!("{e:?}")))?;
36+
otel_debug!(name: "HttpMetricsClient.ExportStarted");
37+
let result = client.send_bytes(request).await;
4138

42-
Ok(())
39+
match result {
40+
Ok(response) => {
41+
if response.status().is_success() {
42+
otel_debug!(name: "HttpMetricsClient.ExportSucceeded");
43+
Ok(())
44+
} else {
45+
let error = format!(
46+
"OpenTelemetry metrics export failed. Status Code: {}, Response: {:?}",
47+
response.status().as_u16(),
48+
response.body()
49+
);
50+
otel_debug!(name: "HttpMetricsClient.ExportFailed", error = &error);
51+
Err(OTelSdkError::InternalFailure(error))
52+
}
53+
}
54+
Err(e) => {
55+
let error = format!("{e:?}");
56+
otel_debug!(name: "HttpMetricsClient.ExportFailed", error = &error);
57+
Err(OTelSdkError::InternalFailure(error))
58+
}
59+
}
4360
}
4461

4562
fn shutdown(&self) -> OTelSdkResult {

opentelemetry-otlp/src/exporter/http/trace.rs

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -42,7 +42,7 @@ impl SpanExporter for OtlpHttpClient {
4242
}
4343

4444
let request_uri = request.uri().to_string();
45-
otel_debug!(name: "HttpTracesClient.CallingExport");
45+
otel_debug!(name: "HttpTracesClient.ExportStarted");
4646
let response = client
4747
.send_bytes(request)
4848
.await
@@ -51,13 +51,15 @@ impl SpanExporter for OtlpHttpClient {
5151
if !response.status().is_success() {
5252
let error = format!(
5353
"OpenTelemetry trace export failed. Url: {}, Status Code: {}, Response: {:?}",
54-
response.status().as_u16(),
5554
request_uri,
55+
response.status().as_u16(),
5656
response.body()
5757
);
58+
otel_debug!(name: "HttpTracesClient.ExportFailed", error = &error);
5859
return Err(OTelSdkError::InternalFailure(error));
5960
}
6061

62+
otel_debug!(name: "HttpTracesClient.ExportSucceeded");
6163
Ok(())
6264
}
6365

opentelemetry-otlp/src/exporter/tonic/logs.rs

Lines changed: 15 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -72,17 +72,27 @@ impl LogExporter for TonicLogsClient {
7272

7373
let resource_logs = group_logs_by_resource_and_scope(batch, &self.resource);
7474

75-
otel_debug!(name: "TonicsLogsClient.CallingExport");
75+
otel_debug!(name: "TonicLogsClient.ExportStarted");
7676

77-
client
77+
let result = client
7878
.export(Request::from_parts(
7979
metadata,
8080
extensions,
8181
ExportLogsServiceRequest { resource_logs },
8282
))
83-
.await
84-
.map_err(|e| OTelSdkError::InternalFailure(format!("export error: {:?}", e)))?;
85-
Ok(())
83+
.await;
84+
85+
match result {
86+
Ok(_) => {
87+
otel_debug!(name: "TonicLogsClient.ExportSucceeded");
88+
Ok(())
89+
}
90+
Err(e) => {
91+
let error = format!("export error: {:?}", e);
92+
otel_debug!(name: "TonicLogsClient.ExportFailed", error = &error);
93+
Err(OTelSdkError::InternalFailure(error))
94+
}
95+
}
8696
}
8797

8898
fn shutdown_with_timeout(&self, _timeout: time::Duration) -> OTelSdkResult {

opentelemetry-otlp/src/exporter/tonic/metrics.rs

Lines changed: 14 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -75,18 +75,27 @@ impl MetricsClient for TonicMetricsClient {
7575
)),
7676
})?;
7777

78-
otel_debug!(name: "TonicsMetricsClient.CallingExport");
78+
otel_debug!(name: "TonicMetricsClient.ExportStarted");
7979

80-
client
80+
let result = client
8181
.export(Request::from_parts(
8282
metadata,
8383
extensions,
8484
ExportMetricsServiceRequest::from(metrics),
8585
))
86-
.await
87-
.map_err(|e| OTelSdkError::InternalFailure(format!("{e:?}")))?;
86+
.await;
8887

89-
Ok(())
88+
match result {
89+
Ok(_) => {
90+
otel_debug!(name: "TonicMetricsClient.ExportSucceeded");
91+
Ok(())
92+
}
93+
Err(e) => {
94+
let error = format!("{e:?}");
95+
otel_debug!(name: "TonicMetricsClient.ExportFailed", error = &error);
96+
Err(OTelSdkError::InternalFailure(error))
97+
}
98+
}
9099
}
91100

92101
fn shutdown(&self) -> OTelSdkResult {

opentelemetry-otlp/src/exporter/tonic/trace.rs

Lines changed: 15 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -76,17 +76,27 @@ impl SpanExporter for TonicTracesClient {
7676

7777
let resource_spans = group_spans_by_resource_and_scope(batch, &self.resource);
7878

79-
otel_debug!(name: "TonicsTracesClient.CallingExport");
79+
otel_debug!(name: "TonicTracesClient.ExportStarted");
8080

81-
client
81+
let result = client
8282
.export(Request::from_parts(
8383
metadata,
8484
extensions,
8585
ExportTraceServiceRequest { resource_spans },
8686
))
87-
.await
88-
.map_err(|e| OTelSdkError::InternalFailure(e.to_string()))?;
89-
Ok(())
87+
.await;
88+
89+
match result {
90+
Ok(_) => {
91+
otel_debug!(name: "TonicTracesClient.ExportSucceeded");
92+
Ok(())
93+
}
94+
Err(e) => {
95+
let error = e.to_string();
96+
otel_debug!(name: "TonicTracesClient.ExportFailed", error = &error);
97+
Err(OTelSdkError::InternalFailure(error))
98+
}
99+
}
90100
}
91101

92102
fn shutdown(&mut self) -> OTelSdkResult {

0 commit comments

Comments
 (0)