概述css
调试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的日志git
若是出现了未捕获的异常,在输出窗口中能够看到出错信息,如:fail: Microsoft.AspNetCore.Server.Kestrel[13]……An unhandled exception was thrown by the application. System.NullReferenceException: 未将对象引用设置到对象的实例。在……行号 xx 在……行号 xxgithub
若是在生产环境中能够把这些出错信息保存下来,将对排查代码错误颇有帮助。web
代码发布后,能够看到一个web.config文件,其中有一个aspNetCore标签,把stdoutLogEnabled属性设置为true。这样,在网站运行后,默认会在/logs文件夹下产生一个stdout_xxx_xxx.log的文件,日志会保存到这里面。json
控制日志数量服务器
修改appsettings.json中的Logging/LogLevel/Default值。日志级别从低到高为Trace 、Debug 、Information 、Warning 、Error 、Critical 、None。级别越低,输出的日志越多。若是仅想输出错误信息,可把级别设置成Error。若是把级别设置成None,将会阻止全部级别的日志输出。app
值得注意的时,在网站运行状态下,修改appsettings.json中的上述配置,不会形成网站重启(而修改web.config会形成网站重启),但对日志级别的控制会当即生效。asp.net
添加web.config到源代码项目中ide
新建的asp.net core 2.2项目,默认没有web.config文件。能够经过“添加”、“新建项”、“Web配置文件”的方式手动添加。这样就能够在源码项目中设定web.config的内容了。网站
使日志包含时间
一、安装nuget包LoggingAdvanced.Console
二、修改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提供程序 });
三、修改appsettings.json的中的Logging部分,修改后以下:
"Logging": { "IncludeTimestamp": true, "IncludeLogNamespace": true, "TimestampPolicy": { "TimeZone": "Ulaanbaatar Standard Time", "Format": "yyyy/MM/dd HH:mm:ss.fff" }, "LogLevel": { "Default": "Warning" } }
参考资料
一、有关“日志提供程序”、“日志级别”、“日志筛选”等概念,请参考官方文档:Logging in .NET Core and ASP.NET Core