Skip to content

Commit 54a8a4c

Browse files
committed
Adding a trace source to events emmited by the HTTP trace handler
1 parent 76b9791 commit 54a8a4c

File tree

3 files changed

+25
-4
lines changed

3 files changed

+25
-4
lines changed

src/WebJobs.Script.WebHost/Handlers/SystemTraceHandler.cs

Lines changed: 21 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,8 @@
11
// Copyright (c) .NET Foundation. All rights reserved.
22
// Licensed under the MIT License. See License.txt in the project root for license information.
33

4+
using System;
5+
using System.Diagnostics;
46
using System.Net.Http;
57
using System.Threading;
68
using System.Threading.Tasks;
@@ -13,22 +15,37 @@ namespace Microsoft.Azure.WebJobs.Script.WebHost.Handlers
1315
public class SystemTraceHandler : DelegatingHandler
1416
{
1517
private readonly HttpConfiguration _config;
18+
private TraceWriter _traceWriter;
1619

1720
public SystemTraceHandler(HttpConfiguration config)
1821
{
1922
_config = config;
2023
}
2124

25+
private TraceWriter TraceWriter
26+
{
27+
get
28+
{
29+
if (_traceWriter == null)
30+
{
31+
_traceWriter = _config.DependencyResolver
32+
.GetService<TraceWriter>()
33+
.WithSource(ScriptConstants.TraceSourceHttpHandler);
34+
}
35+
36+
return _traceWriter;
37+
}
38+
}
39+
2240
protected override async Task<HttpResponseMessage> SendAsync(HttpRequestMessage request, CancellationToken cancellationToken)
2341
{
24-
var traceWriter = _config.DependencyResolver.GetService<TraceWriter>();
2542
var details = new JObject
2643
{
2744
{ "requestId", request.GetRequestId() },
2845
{ "method", request.Method.ToString() },
2946
{ "uri", request.RequestUri.LocalPath.ToString() }
3047
};
31-
traceWriter.Info($"Executing HTTP request: {details}");
48+
TraceWriter.Info($"Executing HTTP request: {details}");
3249

3350
var response = await base.SendAsync(request, cancellationToken);
3451

@@ -39,14 +56,14 @@ protected override async Task<HttpResponseMessage> SendAsync(HttpRequestMessage
3956
{ "uri", request.RequestUri.LocalPath.ToString() },
4057
{ "authorizationLevel", request.GetAuthorizationLevel().ToString() }
4158
};
42-
traceWriter.Info($"Executed HTTP request: {details}");
59+
TraceWriter.Info($"Executed HTTP request: {details}");
4360

4461
details = new JObject
4562
{
4663
{ "requestId", request.GetRequestId() },
4764
{ "status", response.StatusCode.ToString() }
4865
};
49-
traceWriter.Info($"Response details: {details}");
66+
TraceWriter.Info($"Response details: {details}");
5067

5168
return response;
5269
}

src/WebJobs.Script/ScriptConstants.cs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,7 @@ public static class ScriptConstants
2626
public const string TraceSourceHostAdmin = "HostAdmin";
2727
public const string TraceSourceFileWatcher = "FileWatcher";
2828
public const string TraceSourceSwagger = "SwaggerDocumentation";
29+
public const string TraceSourceHttpHandler = "HttpRequestTraceHandler";
2930

3031
// Define all system parameters we inject with a prefix to avoid collisions
3132
// with user parameters

test/WebJobs.Script.Tests/Handlers/SystemTraceHandlerTests.cs

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -57,18 +57,21 @@ public async Task SendAsync_WritesExpectedTraces()
5757
Assert.Equal(TraceLevel.Info, trace.Level);
5858
string message = Regex.Replace(trace.Message, @"\s+", string.Empty);
5959
Assert.Equal($"ExecutingHTTPrequest:{{\"requestId\":\"{requestId}\",\"method\":\"GET\",\"uri\":\"/api/testfunc\"}}", message);
60+
Assert.Equal(ScriptConstants.TraceSourceHttpHandler, trace.Source);
6061

6162
// validate executed trace
6263
trace = traces[1];
6364
Assert.Equal(TraceLevel.Info, trace.Level);
6465
message = Regex.Replace(trace.Message, @"\s+", string.Empty);
6566
Assert.Equal($"ExecutedHTTPrequest:{{\"requestId\":\"{requestId}\",\"method\":\"GET\",\"uri\":\"/api/testfunc\",\"authorizationLevel\":\"Function\"}}", message);
67+
Assert.Equal(ScriptConstants.TraceSourceHttpHandler, trace.Source);
6668

6769
// validate response trace
6870
trace = traces[2];
6971
Assert.Equal(TraceLevel.Info, trace.Level);
7072
message = Regex.Replace(trace.Message, @"\s+", string.Empty);
7173
Assert.Equal($"Responsedetails:{{\"requestId\":\"{requestId}\",\"status\":\"OK\"}}", message);
74+
Assert.Equal(ScriptConstants.TraceSourceHttpHandler, trace.Source);
7275
}
7376
}
7477
}

0 commit comments

Comments
 (0)