概述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