ASP.NET5已經內建集成了日誌系統,你也能夠用第三方的日誌框架。json
1. 在你的應用程序中實現日誌api
在Startup.cs文件中,在Configure裏能夠把ILoggerFactory注入進去,而後調用它的CreateLogger方法去建立日誌類,代碼以下:app
public void Configure(IApplicationBuilder app, IHostingEnvironment env, ILoggerFactory loggerFactory) {
loggerFactory.AddConsole(minLevel:LogLevel.Verbose); app.Run(async (context) => { var logger = loggerFactory.CreateLogger("Catchall Endpoint"); logger.LogInformation("Not endpoint found for request {path}", context.Request.Path); awiat context.Response.WriteAsync("No endpoint found - try/api/todo."); } }
建立日誌的時候須要傳遞一個「類型」參數,經過它是能夠有層級關係的,經過「。」來分割。框架
要在應用程序當中使用日誌,能夠經過DI注入ILogger<T>, 例如async
public class TodoController : Controller { private readonly ILogger<TodoController> _logger; public TodoController(ILogger<TodoController> logger) { _logger = logger } }
在上面的例子,logger會用Type的名字作爲它的分類的名字。ui
2. 日誌級別spa
ASP.NET5定義了6個日誌級別日誌
Debugcode
Verboseorm
Information
Warning
Error
Critical
範圍:
範圍是經過調用BeginScopeImpl返回的類型爲IDisposable的對象。 內建的TraceSourceLogger,它的生命週期是從開始跟蹤到結束跟蹤操做。
3. 配置你的日誌
在上面的例子當中,你能夠經過loggerFactory.AddConsole來添加你日誌須要輸入的方式,它會輸出到控制檯。
配置TraceSource日誌
首先,你須要添加Microsoft.Extensions.Logging.TraceSource包到你的project.json文件裏。
"dependencies": { "Microsoft.AspNet.Mvc": "6.0.0-rc1-final", "Microsoft.AspNet.Server.Kestrel": "1.0.0-rc1-final", "Microsoft.AspNet.StaticFiles": "1.0.0-rc1-final", "Microsoft.Extensions.Logging": "1.0.0-rc1-final", "Microsoft.Extensions.Logging.Console": "1.0.0-rc1-final", "Microsoft.Extensions.Logging.TraceSource": "1.0.0-rc1-final" },下面演示瞭如何配置兩個TraceSource,它在DNX Core裏不可用,因此用了預編譯指令#if DNX451#if DNX451 var sourceSwitch = new SourceSwitch("LoggingSample"); sourceSwitch.Level = SourceLevels.Critical; loggerFactroy.AddTraceSource(sourceSwitch, new ConsoleTraceListener(false)); loggerFactory.AddTraceSource(sourceSwitch, new EventLogTraceListener("Application"));#endif若是你要配置其第三方的日誌,你須要在project.json文件裏添加引用 ,而後添加ILoggerFactory的擴展方法去添加你的日誌。