Tim*_*hko 7 .net logging asp.net-web-api asp.net-core
我正在开发asp .net core 2.1 WEB-API 应用程序。
我将 ILogger 与配置一起使用:
"Logging": {
"LogLevel": {
"Default": "Debug",
"System": "Information",
"Microsoft": "Information"
}
Run Code Online (Sandbox Code Playgroud)
并应要求我看到日志:
信息:Microsoft.AspNetCore.Mvc.Internal.ControllerActionInvoker[1] 使用参数 (ActivationService.Contracts.ActivationRequest) 执行操作方法 ActivationService.Controllers.ActivationController.Post (ActivationService) - 验证状态:有效
和
执行操作方法 ActivationService.Controllers.ActivationController.Post (ActivationService),在 174605.9201 毫秒内返回结果 Microsoft.AspNetCore.Mvc.ObjectResult。
有没有办法配置asp.net来记录响应和请求的跟踪主体?
是的,您可以实现日志记录中间件:
public class RequestResponseLoggingMiddleware
{
private readonly RequestDelegate next;
private readonly ILogger logger;
public RequestResponseLoggingMiddleware(RequestDelegate next, ILoggerFactory loggerFactory)
{
this.next = next;
logger = loggerFactory.CreateLogger<RequestResponseLoggingMiddleware>();
}
public async Task Invoke(HttpContext context)
{
context.Request.EnableRewind();
var buffer = new byte[Convert.ToInt32(context.Request.ContentLength)];
await context.Request.Body.ReadAsync(buffer, 0, buffer.Length);
var requestBody = Encoding.UTF8.GetString(buffer);
context.Request.Body.Seek(0, SeekOrigin.Begin);
logger.LogInformation(requestBody);
var originalBodyStream = context.Response.Body;
using (var responseBody = new MemoryStream())
{
context.Response.Body = responseBody;
await next(context);
context.Response.Body.Seek(0, SeekOrigin.Begin);
var response = await new StreamReader(context.Response.Body).ReadToEndAsync();
context.Response.Body.Seek(0, SeekOrigin.Begin);
logger.LogInformation(response);
await responseBody.CopyToAsync(originalBodyStream);
}
}
}
Run Code Online (Sandbox Code Playgroud)
然后在 Configure 方法中将其添加到 application Builder 中:
public void Configure(IApplicationBuilder app, IHostingEnvironment env)
{
....
app.UseMiddleware<RequestResponseLoggingMiddleware>();
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
11029 次 |
| 最近记录: |