概述
调试 ASP.NET core 程序时, 在输出窗口中, 在输出来源选择 "调试" 或 "xxx-ASP.NET Core web 服务器" 时, 可以看到类似 "info:Microsoft.AspNetCore.Hosting.Internal.WebHost[2] Request finished in 285.6ms 200 text/CSS" 这样的内容, 这就是 ASP.NET core 的日志
如果出现了未捕获的异常, 在输出窗口中可以看到出错信息, 如: fail: Microsoft.AspNetCore.Server.Kestrel[13]......An unhandled exception was thrown by the application. System.NullReferenceException: 未将对象引用设置到对象的实例. 在...... 行号 xx 在...... 行号 xx
如果在生产环境中可以把这些出错信息保存下来, 将对排查代码错误很有帮助.
代码发布后, 可以看到一个 Web.config 文件, 其中有一个 aspNetCore 标签, 把 stdoutLogEnabled 属性设置为 true. 这样, 在网站运行后, 默认会在 / logs 文件夹下产生一个 stdout_xxx_xxx.log 的文件, 日志会保存到这里面.
控制日志数量
修改 appsettings.JSON 中的 Logging/LogLevel/Default 值. 日志级别从低到高为 Trace ,Debug ,Information ,Warning ,Error ,Critical ,None. 级别越低, 输出的日志越多. 如果仅想输出错误信息, 可把级别设置成 Error. 如果把级别设置成 None, 将会阻止所有级别的日志输出.
值得注意的时, 在网站运行状态下, 修改 appsettings.JSON 中的上述配置, 不会造成网站重启 (而修改 Web.config 会造成网站重启), 但对日志级别的控制会立即生效.
添加 Web.config 到源代码项目中
新建的 ASP.NET core 2.2 项目, 默认没有 Web.config 文件. 可以通过 "添加","新建项","Web 配置文件" 的方式手动添加. 这样就可以在源码项目中设定 Web.config 的内容了.
使日志包含时间
1, 安装 nuget 包 LoggingAdvanced.Console
2, 修改 Program.cs 的 CreateWebHostBuilder 方法, 在其中的方法调用链的最后, 调用 ConfigureLogging 方法, 修改后的代码如下:
- public static IWebHostBuilder CreateWebHostBuilder(string[] args) =>
- WebHost.CreateDefaultBuilder(args)
- .UseStartup<Startup>()
- .ConfigureLogging((hostingContext, loggingBuilder) =>
- {
- loggingBuilder.ClearProviders();// 清除所有提供程序
- loggingBuilder.AddDebug();// 添加 Debug 提供程序
- loggingBuilder.AddEventSourceLogger();// 添加 EventSource 提供程序
- var loggingSection = hostingContext.Configuration.GetSection("Logging");
- loggingBuilder.AddConsoleAdvanced(loggingSection);// 添加 LoggingAdvanced.Console 提供程序
- });
3, 修改 appsettings.JSON 的中的 Logging 部分, 修改后如下:
- "Logging": {
- "IncludeTimestamp": true,
- "IncludeLogNamespace": true,
- "TimestampPolicy": {
- "TimeZone": "Ulaanbaatar Standard Time",
- "Format": "yyyy/MM/dd HH:mm:ss.fff"
- },
- "LogLevel": {
- "Default": "Warning"
- }
- }
参考资料
1, 有关 "日志提供程序","日志级别","日志筛选" 等概念, 请参考官方文档: Logging in .NET Core and ASP.NET Core
2,LoggingAdvanced.Console https://github.com/ilya-chumakov/LoggingAdvanced
来源: https://www.cnblogs.com/sdBob/p/12436281.html