【发布时间】:2018-10-18 15:07:51
【问题描述】:
目前,我有一个全局注册的处理程序来捕获各种请求和响应。然而,系统包含一些端点,其内容类型为 pdf 或 csv。
public class LogRequestAndResponseHandler : DelegatingHandler
{
protected override async Task<HttpResponseMessage> SendAsync(
HttpRequestMessage request, CancellationToken cancellationToken)
{
// log request body
var requestBody = await request.Content.ReadAsStringAsync();
LogUtil.Info("[" + request.GetCorrelationId() + "] Call:" + request.RequestUri,"httpTrace");
if(!string.IsNullOrEmpty(requestBody))
LogUtil.Info(requestBody,"httpTrace");
// let other handlers process the request
var result = await base.SendAsync(request, cancellationToken);
if (result.Content != null)
{
// once response body is ready, log it
var responseBody = await result.Content.ReadAsStringAsync();
//LogUtil.Info(responseBody,"httpTrace");
LogUtil.Info("[" + request.GetCorrelationId().ToString() + "] Return:" + responseBody,"httpTrace");
}
return result;
}
}
我正在使用上面的代码,每当调用 pdf 端点时,整个 pdf 正文将被捕获到二进制格式的日志中。
我想知道仅过滤 json 正文或标头进行记录的最佳方法是什么。
【问题讨论】:
标签: c# asp.net-web-api2 nlog