Skip to content

Commit fea9a34

Browse files
author
Timothy Mothra
authored
[AzureMonitorExporter] Refactor RestClient and DebugWritter (Azure#32172)
* refactor rest client and debugwritter * changelog
1 parent 4395866 commit fea9a34

File tree

3 files changed

+35
-21
lines changed

3 files changed

+35
-21
lines changed

sdk/monitor/Azure.Monitor.OpenTelemetry.Exporter/CHANGELOG.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@
1515

1616
* Update OpenTelemetry dependencies ([#32047](https://github.com/Azure/azure-sdk-for-net/pull/32047))
1717
- OpenTelemetry v1.4.0-beta.2
18+
* Debugging Output now includes Telemetry sent from storage. ([#32172](https://github.com/Azure/azure-sdk-for-net/pull/32172))
1819

1920
## 1.0.0-beta.4 (2022-10-07)
2021

sdk/monitor/Azure.Monitor.OpenTelemetry.Exporter/src/Customizations/ApplicationInsightsRestClient.cs

Lines changed: 23 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33

44
using System;
55
using System.Collections.Generic;
6+
using System.Runtime.CompilerServices;
67
using System.Threading;
78
using System.Threading.Tasks;
89

@@ -14,6 +15,8 @@ namespace Azure.Monitor.OpenTelemetry.Exporter
1415
{
1516
internal partial class ApplicationInsightsRestClient
1617
{
18+
private RawRequestUriBuilder _rawRequestUriBuilder;
19+
1720
/// <summary>
1821
/// This operation sends a sequence of telemetry events that will be monitored by Azure Monitor.
1922
/// </summary>
@@ -75,42 +78,42 @@ internal async Task<HttpMessage> InternalTrackAsync(ReadOnlyMemory<byte> body, C
7578

7679
internal HttpMessage CreateTrackRequest(IEnumerable<TelemetryItem> body)
7780
{
78-
var message = _pipeline.CreateMessage();
79-
var request = message.Request;
80-
request.Method = RequestMethod.Post;
81-
var uri = new RawRequestUriBuilder();
82-
uri.AppendRaw(_host, false);
83-
uri.AppendRaw("/v2", false);
84-
uri.AppendPath("/track", false);
85-
request.Uri = uri;
86-
request.Headers.Add("Content-Type", "application/json");
87-
request.Headers.Add("Accept", "application/json");
8881
using var content = new NDJsonWriter();
8982
foreach (var item in body)
9083
{
9184
content.JsonWriter.WriteObjectValue(item);
9285
content.WriteNewLine();
9386
}
94-
request.Content = RequestContent.Create(content.ToBytes());
87+
9588
TelemetryDebugWriter.WriteTelemetry(content);
96-
return message;
89+
90+
return CreateRequest(RequestContent.Create(content.ToBytes()));
9791
}
9892

9993
internal HttpMessage CreateTrackRequest(ReadOnlyMemory<byte> body)
94+
{
95+
TelemetryDebugWriter.WriteTelemetryFromStorage(body);
96+
97+
return CreateRequest(RequestContent.Create(body));
98+
}
99+
100+
[MethodImpl(MethodImplOptions.AggressiveInlining)]
101+
private HttpMessage CreateRequest(RequestContent requestContent)
100102
{
101103
var message = _pipeline.CreateMessage();
102104
var request = message.Request;
103105
request.Method = RequestMethod.Post;
104-
var uri = new RawRequestUriBuilder();
105-
uri.AppendRaw(_host, false);
106-
uri.AppendRaw("/v2", false);
107-
uri.AppendPath("/track", false);
108-
request.Uri = uri;
106+
request.Uri = LazyInitializer.EnsureInitialized(ref _rawRequestUriBuilder, () =>
107+
{
108+
var uri = new RawRequestUriBuilder();
109+
uri.AppendRaw(_host, false);
110+
uri.AppendRaw("/v2/track", false);
111+
return uri;
112+
});
109113
request.Headers.Add("Content-Type", "application/json");
110114
request.Headers.Add("Accept", "application/json");
111-
using var content = new NDJsonWriter();
112-
request.Content = RequestContent.Create(body);
113-
TelemetryDebugWriter.WriteTelemetry(content);
115+
request.Content = requestContent;
116+
114117
return message;
115118
}
116119
}

sdk/monitor/Azure.Monitor.OpenTelemetry.Exporter/src/Internals/TelemetryDebugWriter.cs

Lines changed: 11 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,9 @@
11
// Copyright (c) Microsoft Corporation. All rights reserved.
22
// Licensed under the MIT License.
33

4+
using System;
45
using System.Diagnostics;
6+
using System.Text;
57

68
namespace Azure.Monitor.OpenTelemetry.Exporter.Internals
79
{
@@ -16,7 +18,7 @@ public static void WriteMessage(string message)
1618

1719
if (Debugger.IsAttached && Debugger.IsLogging())
1820
{
19-
Debugger.Log(0, null, message);
21+
Debugger.Log(0, null, message + "\n");
2022
}
2123
}
2224

@@ -32,5 +34,13 @@ public static void WriteTelemetry(NDJsonWriter content)
3234
Debugger.Log(0, null, content.ToString());
3335
}
3436
}
37+
38+
public static void WriteTelemetryFromStorage(ReadOnlyMemory<byte> content)
39+
{
40+
if (Debugger.IsAttached && Debugger.IsLogging())
41+
{
42+
Debugger.Log(0, null, "(TRANSMITTING TELEMETRY FROM STORAGE)\n" + Encoding.UTF8.GetString(content.ToArray()));
43+
}
44+
}
3545
}
3646
}

0 commit comments

Comments
 (0)