MVC记录范围
我读到MVC中间件框架内部使用带有控制器操作的日志范围:
和
我正在尝试使用此功能来编写一些日志信息.我执行了以下步骤: 1)创建Asp.net核心MVC应用程序 [Route("api/[controller]")] public class TodoController : Controller { private readonly ILogger<TodoController> _logger; public TodoController(ILogger<TodoController> logger) { _logger = logger; } // GET: api/values [HttpGet] public IEnumerable<string> Get() { _logger.LogInformation(1000,"Listing all items started"); Thread.Sleep(2000); _logger.LogInformation(1000,"Listing all items finished"); return new string[] { "value1","value2" }; } } 我希望我的日志消息流始终只包含“列出所有项目已启动”和“列出所有已完成的项目”部分,这些部分彼此不相互分离. ????RequestId:xxx列出所有已启动的项目 什么原因?这是正确的行为,我在记录的背景下误解了“范围”一词吗? 解决方法
日志记录范围有助于创建范围,通过该范围在其中创建的任何日志语句都可以获得该信息.
以下是来自ConsoleLogger并将IncludeScopes设置为true: info: Microsoft.AspNetCore.Hosting.Internal.WebHost[1] => RequestId:0HKT6JC0EVFNA RequestPath:/api/values Request starting HTTP/1.1 GET http://localhost:5000/api/values info: Microsoft.AspNetCore.Mvc.Internal.ControllerActionInvoker[1] => RequestId:0HKT6JC0EVFNA RequestPath:/api/values => WebApplication8.Controllers.ValuesController.Get (WebApplication8) Executing action method WebApplication8.Controllers.ValuesController.Get (WebApplication8) with arguments () - ModelState is Valid info: Microsoft.AspNetCore.Mvc.Internal.ObjectResultExecutor[1] => RequestId:0HKT6JC0EVFNA RequestPath:/api/values => WebApplication8.Controllers.ValuesController.Get (WebApplication8) Executing ObjectResult,writing value Microsoft.AspNetCore.Mvc.ControllerContext. info: Microsoft.AspNetCore.Mvc.Internal.ControllerActionInvoker[2] => RequestId:0HKT6JC0EVFNA RequestPath:/api/values => WebApplication8.Controllers.ValuesController.Get (WebApplication8) Executed action WebApplication8.Controllers.ValuesController.Get (WebApplication8) in 322.8533ms info: Microsoft.AspNetCore.Hosting.Internal.WebHost[2] => RequestId:0HKT6JC0EVFNA RequestPath:/api/values Request finished in 428.477ms 200 application/json; charset=utf-8 如果您注意到上面的日志,那么这里为每个日志语句打印了RequestId:0HKT6JC0EVFNA(如前所述,范围或嵌套范围内的所有日志语句都将从所有这些范围获取信息) 默认情况下在ASP.NET中创建的一些日志范围是如上所示的RequestId范围,也是从日志中看到的MVC控制器操作调用的范围(例如,此行:=> WebApplication8.Controllers.ValuesController.Get(WebApplication8) ) 如果需要,您也可以自己创建范围: using (logger.BeginScope("OrderOrchestrationId:{OrderOrchestrationId}",orderOrchestrationId)) { // any log statements from here on would have `OrderOrchestrationId` available } 注意: 范围如何有用? (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- 如何使用Server.MapPath来获取ASP.NET中的网站文件夹外的位
- asp.net-mvc – 我的剃刀视图的自定义基页类型,如何使用城堡
- Webpack,asp.net核心,docker:使用dotnet调试或发布版本构建
- asp.net-mvc – 必需属性“pageBaseType”未找到 – 启动我
- asp.net-mvc – Firefox在Ajax请求重定向期间不保留自定义标
- asp.net-mvc – MicrosoftMvcValidation.js VS jquery.vali
- asp.net-mvc – 使用依赖注入来组织ASP.Net MVC解决方案的最
- .net – MVC 4 Mocking HttpContext – 如何模拟DisplayMod
- asp.net-mvc – MVC发布复杂对象的列表
- asp.net – 如果Ninject尚未绑定,如何在Ninject中绑定?
- webmatrix – 我看不到ASP.NET网页管理
- asp.net-mvc – 在SignalR Core中更改全局设置配
- asp.net-mvc – MVC4上的服务堆栈
- asp.net-mvc – MVC – 视图中的多个模型
- asp.net-core – ASP.NET核心添加视图参数名称路
- 是否有WPF的母版页(如asp.net)的概念?
- asp.net – ASP核心:如何设置httpContext.User?
- asp.net-core – 如何轻松地从ASP.NET Core 2.1迁
- asp.net-mvc – IdentityServer MVC令牌过期
- asp.net-mvc – 单声道2.2上的ASP.NET mvc