ASP.NET Core 中的日志记录
admin
2021-06-03本文作者:梁桐铭- 微软最有价值专家(Microsoft MVP)
本文出自《从零开始学 ASP.NET Core 与 EntityFramework Core》目录
视频课程效果更佳:跨平台开发实战掌握 ASP.NET Core 与 EntityFramework Core
ASP.NET Core 中的日志记录
在本章节中,我们将讨论在 ASP.NET Core 中的日志记录。
ASP.NET Core 中的默认日志
我们可以从命令行或 Visual Studio 中 运行 ASP.NET Core 应用程序。
从命令行中运行 ASP.NET Core 应用程序
1、以管理员身份启动命令提示符
2、更改包含项目的文件夹的路径
3、最后执行以下 dot net run
命令
我的项目路径为D:\CodeManager\github\yoyomooc\ASP.NET -core--for-beginner\StudentManagement\StudentManagement
请参考上图,结合自己的项目所在路径,运行命令。
当我们从命令行使用dotnet run
命令运行项目时,我们会看到许多信息记录到控制台,如下所示。
info: Microsoft.AspNetCore.Hosting.Internal.WebHost[1]
Request starting HTTP/1.1 GET http://localhost:5000/
info: Microsoft.AspNetCore.Mvc.Internal.ControllerActionInvoker[3]
Route matched with {action = "Index", controller = "Home"}. Executing controller action with signature Microsoft.AspNetCore.Mvc.IActionResult Index() on controller StudentManagement.Controllers.HomeController (StudentManagement).
info: Microsoft.AspNetCore.Mvc.Internal.ControllerActionInvoker[1]
Executing action method StudentManagement.Controllers.HomeController.Index (StudentManagement) - Validation state: Valid
info: Microsoft.AspNetCore.Mvc.Internal.ControllerActionInvoker[2]
Executed action method StudentManagement.Controllers.HomeController.Index (StudentManagement), returned result Microsoft.AspNetCore.Mvc.ViewResult in 1.1315ms.
info: Microsoft.AspNetCore.Mvc.ViewFeatures.ViewResultExecutor[1]
Executing ViewResult, running view Index.
info: Microsoft.EntityFrameworkCore.Infrastructure[10403]
Entity Framework Core 2.2.4-servicing-10062 initialized 'AppDbContext' using provider 'Microsoft.EntityFrameworkCore.SqlServer' with options: MaxPoolSize=128
info: Microsoft.EntityFrameworkCore.Database.Command[20101]
Executed DbCommand (6ms) [Parameters=[], CommandType='Text', CommandTimeout='30']
SELECT [s].[Id], [s].[Major], [s].[Email], [s].[Name], [s].[PhotoPath]
FROM [Students] AS [s]
info: Microsoft.AspNetCore.Mvc.ViewFeatures.ViewResultExecutor[4]
Executed ViewResult - view Index executed in 1483.1058ms.
info: Microsoft.AspNetCore.Mvc.Internal.ControllerActionInvoker[2]
Executed action StudentManagement.Controllers.HomeController.Index (StudentManagement) in 1556.5971ms
info: Microsoft.AspNetCore.Hosting.Internal.WebHost[2]
Request finished in 1655.418ms 200 text/html; charset=utf-8
如果我们从 Visual Studio 中运行项目,我们会在 Debug 窗口中看到类似的输出。 打开"调试"窗口, 单击 Visual Studio 中的" 调试"菜单,然后选择"Windows"和"输出" 在" 输出"窗口中,从" 显示输出"下拉列表中选择" 调试 "。
在 ASP.NET Core 中日志记录提供程序
日志记录提供程序是存储或显示日志的组件。
例如,Console 日志提供程序在控制台上显示日志。同样,Debug 日志提供程序在 Visual Studio 的"调试"窗口中显示日志。
ASP.NET Core 内置日志记录提供程序
- Console
- Debug
- EventSource
- EventLog
- TraceSource
- AzureAppServicesFile
- AzureAppServicesBlob
- ApplicationInsights
ASP.NET Core 的第三方日志记录提供程序
- NLog
- Log4net
- elmah
- Serilog
- Sentry
- Gelf
- JSNLog
- KissLog.net
- Loggr
- Stackdriver
ASP.NET Core 中默认的日志记录提供程序
在 Program.cs 文件中的 Program 类中的 Main()方法是我们 ASP.NET Core 应程序的入口。 这个方法调用 CreateDefaultBuilder()方法执行几个任务:
- 设置 Web 服务器
- 从各种配置源加载主机和应用程序配置信息
- 配置日志记录
由于 ASP.NET Core 是开源的,我们可以在他们的官方 github 页面上看到完整的源代码。 以下是 CreateDefaultBuilder()方法的源代码:
源代码路径地址:https://github.com/aspnet/AspNetCore/blob/v2.2.2/src/DefaultBuilder/src/WebHost.cs
.ConfigureLogging((hostingContext, logging) =>
{
logging.AddConfiguration(hostingContext.Configuration.GetSection("Logging"));
logging.AddConsole();
logging.AddDebug();
logging.AddEventSourceLogger();
})
作为配置日志记录的一部分,CreateDefaultBuilder()方法默认添加以下 3 个日志记录提供程序。这就是我们运行 ASP.NET Core 项目时,我们可以在 Visual Studio 的控制台和调试窗口上都显示了日志信息。
- Console
- Debug
- EventSource
在应用程序配置文件 appsettings.json 中可以找到 CreateDefaultBuilder()方法对应的Logging节点 。
以下是我电脑上 appsettings.json 文件中的 Logging 部分。
"Logging": {
"LogLevel": {
"Default": "Warning"
}
}
appsettings.json 文件
LogLevel 用于控制记录或显示的日志数据量。我们将在后面的章节中详细讨论日志级别。
此处我们按 F5 进入调试模式,运行我们的项目,同时打开调试输出窗口,窗口打开位置请看下图:
成功运行项目后,找到输出窗口查看调式,可以看到下图,
显示的是"iisexpress"是因为我们当前是进程内,为了让我们控制日志级别更加的方便,我们需要修改我们的项目文件StudentManagement.csproj
为进程外,代码如下:
<PropertyGroup>
<TargetFramework>netcoreapp2.2</TargetFramework>
<AspNetCoreHostingModel>OutOfProcess</AspNetCoreHostingModel>
</PropertyGroup>
重新运行项目后,可以看到,运行的进程已经是"dotnet.exe",说明我们已经修改为进程外。
为了让后续我们的内容跟踪方便,我们可以关闭掉我们弹出的很多内容。 在 Visual Studio 中单击工具 - 选项。在" 选项"窗口的" 调试 - 输出窗口"下,关闭不需要的消息。
当然在实际开发中不建议您像这样关闭,建议根据自己的需求,灵活调整。
让我们重新运行我们的项目,进入调试模式后。我们的调试界面一片空白,看起来像是我们关闭掉了所有的调试日志内容的打印。
文章说明
如果您觉得我的文章质量还不错,欢迎打赏,也可以订阅我的视频哦
未得到授权不得擅自转载本文内容,52abp.com 保留版权
感谢您对我的支持