Skip to content

Commit fc8557c

Browse files
committed
Adding request id to error trace
1 parent 531e19e commit fc8557c

File tree

5 files changed

+17
-9
lines changed

5 files changed

+17
-9
lines changed

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

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -83,6 +83,7 @@ private IEnumerable<ExceptionProcessor> GetExceptionHandlers(Exception exc)
8383

8484
private static void DefaultExceptionHandler(ExceptionContext exceptionContext, AuthorizationLevel currentLevel, ApiErrorModel error)
8585
{
86+
error.RequestId = exceptionContext.Request?.GetRequestId();
8687
if (currentLevel == AuthorizationLevel.Admin || exceptionContext.RequestContext.IsLocal)
8788
{
8889
error.Message = GetExceptionMessage(exceptionContext.Exception);

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

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,7 @@ protected override async Task<HttpResponseMessage> SendAsync(HttpRequestMessage
2424
var traceWriter = _config.DependencyResolver.GetService<TraceWriter>();
2525
var details = new JObject
2626
{
27-
{ "id", request.GetRequestId() },
27+
{ "requestId", request.GetRequestId() },
2828
{ "method", request.Method.ToString() },
2929
{ "uri", request.RequestUri.LocalPath.ToString() }
3030
};
@@ -34,7 +34,7 @@ protected override async Task<HttpResponseMessage> SendAsync(HttpRequestMessage
3434

3535
details = new JObject
3636
{
37-
{ "id", request.GetRequestId() },
37+
{ "requestId", request.GetRequestId() },
3838
{ "method", request.Method.ToString() },
3939
{ "uri", request.RequestUri.LocalPath.ToString() },
4040
{ "authorizationLevel", request.GetAuthorizationLevel().ToString() }
@@ -43,7 +43,7 @@ protected override async Task<HttpResponseMessage> SendAsync(HttpRequestMessage
4343

4444
details = new JObject
4545
{
46-
{ "id", request.GetRequestId() },
46+
{ "requestId", request.GetRequestId() },
4747
{ "status", response.StatusCode.ToString() }
4848
};
4949
traceWriter.Info($"Response details: {details}");

src/WebJobs.Script.WebHost/Models/ApiErrorModel.cs

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,9 @@ public ApiErrorModel()
2323
[JsonProperty("id")]
2424
public string Id { get; set; }
2525

26+
[JsonProperty("requestId")]
27+
public string RequestId { get; set; }
28+
2629
[JsonProperty("statusCode")]
2730
public HttpStatusCode StatusCode { get; set; }
2831

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

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -76,7 +76,7 @@ public async Task Handle_WithAnonymousAndErrorDetailsFlag_SetsResponseWithNoErro
7676
private async Task<ApiErrorModel> ExecuteHandlerTest(AuthorizationLevel authLevel, bool includeDetails)
7777
{
7878
var handler = new ExceptionProcessingHandler(_config);
79-
79+
var requestId = Guid.NewGuid().ToString();
8080
var exception = new Exception("TestException");
8181
var exceptionContext = new ExceptionContext(exception, ExceptionCatchBlocks.HttpServer)
8282
{
@@ -85,7 +85,7 @@ private async Task<ApiErrorModel> ExecuteHandlerTest(AuthorizationLevel authLeve
8585

8686
exceptionContext.Request.SetAuthorizationLevel(authLevel);
8787
exceptionContext.Request.SetConfiguration(_config);
88-
88+
exceptionContext.Request.Properties.Add(ScriptConstants.AzureFunctionsRequestIdKey, requestId);
8989
exceptionContext.RequestContext = new System.Web.Http.Controllers.HttpRequestContext();
9090

9191
var context = new ExceptionHandlerContext(exceptionContext);
@@ -95,7 +95,11 @@ private async Task<ApiErrorModel> ExecuteHandlerTest(AuthorizationLevel authLeve
9595

9696
HttpResponseMessage response = await context.Result.ExecuteAsync(CancellationToken.None);
9797

98-
return await response.Content.ReadAsAsync<ApiErrorModel>();
98+
ApiErrorModel error = await response.Content.ReadAsAsync<ApiErrorModel>();
99+
100+
Assert.Equal(requestId, error.RequestId);
101+
102+
return error;
99103
}
100104
}
101105
}

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

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -56,19 +56,19 @@ public async Task SendAsync_WritesExpectedTraces()
5656
var trace = traces[0];
5757
Assert.Equal(TraceLevel.Info, trace.Level);
5858
string message = Regex.Replace(trace.Message, @"\s+", string.Empty);
59-
Assert.Equal($"ExecutingHTTPrequest:{{\"id\":\"{requestId}\",\"method\":\"GET\",\"uri\":\"/api/testfunc\"}}", message);
59+
Assert.Equal($"ExecutingHTTPrequest:{{\"requestId\":\"{requestId}\",\"method\":\"GET\",\"uri\":\"/api/testfunc\"}}", message);
6060

6161
// validate executed trace
6262
trace = traces[1];
6363
Assert.Equal(TraceLevel.Info, trace.Level);
6464
message = Regex.Replace(trace.Message, @"\s+", string.Empty);
65-
Assert.Equal($"ExecutedHTTPrequest:{{\"id\":\"{requestId}\",\"method\":\"GET\",\"uri\":\"/api/testfunc\",\"authorizationLevel\":\"Function\"}}", message);
65+
Assert.Equal($"ExecutedHTTPrequest:{{\"requestId\":\"{requestId}\",\"method\":\"GET\",\"uri\":\"/api/testfunc\",\"authorizationLevel\":\"Function\"}}", message);
6666

6767
// validate response trace
6868
trace = traces[2];
6969
Assert.Equal(TraceLevel.Info, trace.Level);
7070
message = Regex.Replace(trace.Message, @"\s+", string.Empty);
71-
Assert.Equal($"Responsedetails:{{\"id\":\"{requestId}\",\"status\":\"OK\"}}", message);
71+
Assert.Equal($"Responsedetails:{{\"requestId\":\"{requestId}\",\"status\":\"OK\"}}", message);
7272
}
7373
}
7474
}

0 commit comments

Comments
 (0)