Log
- 默認(rèn)自帶log >>>Program
WebHost.CreateDefaultBuilder()中做了默認(rèn)配置
CreateDefualtBuilder
- Log API
ASP .NET Core 提供了一套Log API, 它可以各種各樣的Log提供商配合使用. http://www.cnblogs.com/cgzl/p/9019314.html
內(nèi)置6個Log提供商:
- Console
- Debug
- EventSource
- EventLog
- TraceSource
- Azure App Service
第三方提供商: - Nlog
- Serilog
ILogger接口
- 創(chuàng)建ILogger的時候指明分類,分類名約定是調(diào)用類的全名(string)
PostController
例如:
依賴注入ILogger<TCategoryName>
ILogger
調(diào)用
OK - 在ILoggerFactory 上調(diào)用CreateLogger方法時可以指定分類的名稱.
[Route("api/posts")]
public class PostController : Controller
{
private readonly IPostRepository _postRepository;
private readonly IUnitOfWork _unitOfWork;
private readonly ILogger _logger;
public PostController(
IPostRepository postRepository,
IUnitOfWork unitOfWork,
ILoggerFactory loggerFactory)
{
_postRepository = postRepository;
_unitOfWork = unitOfWork;
_logger = loggerFactory.CreateLogger("Blog.Api.Controllers.PostController");
}
[HttpGet]
public async Task<IActionResult> Get()
{
var posts = await _postRepository.GetAllPostsAsync();
_logger.LogError("Get All Posts ......");
return Ok(posts);
}
ILogger其他
- 級別
- LogTrace(), 0惧眠,記錄追蹤信息
- LogDebug(), 1趁矾,記錄調(diào)試信息
- LogInformation(), 2纽门,記錄信息性的事情
- LogWarning(), 3,記錄警告信息
- LogError(), 4煤惩,記錄異常
- LogCritical(), 5辑舷,用來記錄嚴(yán)重的事情
- Event ID
- 信息模板
- 異常
- 過濾
- 作用范圍
……
LogError
添加Serilog
- 安裝包
Install-Package Serilog
Install-Package Serilog.AspNetCore
Sinks日志輸出媒介(控制臺、文件蔓搞、sqlserver等)
Install-Package Serilog.Sinks.Console
Install-Package Serilog.Sinks.File
… - Main()中配置
public static void Main(string[] args)
{
//配置Serilog
Log.Logger = new LoggerConfiguration()
//最低輸出級別為Debug
.MinimumLevel.Debug()
//以Microsoft開頭的特殊,調(diào)整最小級別為Information
.MinimumLevel.Override("Microsoft", LogEventLevel.Information)
.Enrich.FromLogContext()
.WriteTo.Console()
.WriteTo.File(Path.Combine("logs", @"log.txt"), rollingInterval: RollingInterval.Day)
.CreateLogger();
var host = CreateWebHostBuilder(args).Build();
//種子文件
using (var scope = host.Services.CreateScope())
{
var services = scope.ServiceProvider;
var loggerFactory = services.GetRequiredService<ILoggerFactory>();
try
{
var applicationContext = services.GetRequiredService<ApplicationContext>();
//調(diào)用方法創(chuàng)建種子數(shù)據(jù)
Seed.SeedAsync(applicationContext, loggerFactory).Wait();
}
catch (Exception e)
{
var logger = loggerFactory.CreateLogger<Program>();
logger.LogError(e, "Error occured seeding the Database.");
}
}
host.Run();
}
public static IWebHostBuilder CreateWebHostBuilder(string[] args) =>
WebHost.CreateDefaultBuilder(args)
//.UseStartup<Startup>();
.UseStartup(typeof(StartupDevelopment).GetTypeInfo().Assembly.FullName)
.UseSerilog(); //調(diào)用Serilog,覆蓋掉CreateDefaultBuilder中的默認(rèn)配置
}
Console
File