in DeviceBridge/Common/RequestLoggingMiddleware.cs [23:58]
public async Task Invoke(HttpContext context)
{
var request = await FormatRequest(context.Request);
var logger = _logger.WithProperty("cv", Utils.GuidFromString(context.TraceIdentifier));
logger.SetProperty("path", context.Request.Path.Value);
var regexResult = Regex.Match(context.Request.Path, @"(?<=devices\/).*?(?=\/)");
if (regexResult.Success)
{
var deviceId = regexResult.Groups[0].Value;
logger.SetProperty("deviceId", deviceId);
}
logger.Info(request);
var originalBodyStream = context.Response.Body;
using (var responseBody = new MemoryStream())
{
context.Response.Body = responseBody;
try
{
await _next(context);
}
catch (Exception e)
{
var tmpResponse = FormatResponse(context.Response);
logger.Error(e, tmpResponse);
await responseBody.CopyToAsync(originalBodyStream);
return;
}
var response = FormatResponse(context.Response);
logger.Info(response);
await responseBody.CopyToAsync(originalBodyStream);
}
}