1. Nu包安装Serilog.ASPNetCore和Serilog.Sinks.File
2. 在APPSettings中添加Serilog注入
"Serilog": { "WriteTo": [ { "Name": "File", "Args": { "path": "logs/log.txt", "rollingInterval": "Day", "outputTemplate": "Occurrence Time: {Timestamp:HH:mm:ss.fff} Level: {Level} Detailed Information: {Message}{NewLine}{Exception}" } } ] },
3. 在Program.cs中注册Serilog的引用
using Microsoft.AspNetCore.Hosting; using Microsoft.Extensions.Configuration; using Microsoft.Extensions.Hosting; using Serilog; using System; namespace SuperNode.WebApi { public class Program { public static void Main(string[] args) { Log.Logger = new LoggerConfiguration(). MinimumLevel.Debug(). MinimumLevel.Override("Microsoft", Serilog.Events.LogEventLevel.Information) .ReadFrom.Configuration(new ConfigurationBuilder() .AddJsonFile("appsettings.json") .Build()) .Enrich.FromLogContext(). /*WriteTo.File(Path.Combine("logs", @"log.txt"), (Serilog.Events.LogEventLevel)RollingInterval.Day, outputTemplate: "{Timestamp:yyyy-MM-dd HH:mm:ss.fff zzz} [{Level:u3}] {Message:lj}{NewLine}{Exception}"). .WriteTo.MSSqlServer("Data Source=DESKTOP-4TU9A6M;Initial Catalog=CoreFrame;User ID=sa;Password=123456", "logs", autoCreateSqlTable: true, restrictedToMinimumLevel: LogEventLevel.Information)*/ CreateLogger(); try { Log.Information("SuperNode.DataPrivilegeCenter"); CreateHostBuilder(args).Build().Run(); } catch (Exception ex) { Log.Fatal(ex, "Host terminated unexpectedly"); } finally { Log.CloseAndFlush(); } } public static IHostBuilder CreateHostBuilder(string[] args) => Host.CreateDefaultBuilder(args) .ConfigureWebHostDefaults(webBuilder => { webBuilder.UseSerilog() .UseStartup<Startup>(); }); } }
4. 在Controller中使用
[Route("api/[controller]")] [ApiController] public class TestController : ControllerBase { private readonly ILogger<TestController> _logger; public TestController(ILogger<TestController> logger) { _logger = logger; } [HttpGet("getById")] public string Get() { return "Hello Web API World"; } [HttpPost] public string Add() { return ""; } [HttpPut] public string Put() { return ""; } [HttpDelete] public string Delete() { return ""; } }
5. 最终生成的Log文件
Occurrence Time: 09:46:02.288 Level: Information Detailed Information: SuperNode.DataPrivilegeCenter Occurrence Time: 09:46:03.296 Level: Information Detailed Information: Application started. Press Ctrl+C to shut down. Occurrence Time: 09:46:03.301 Level: Information Detailed Information: Hosting environment: "Development" Occurrence Time: 09:46:03.302 Level: Information Detailed Information: Content root path: "E:\SuperNode\SuperNode.UserPrivilegeCenter\WebApplication1" Occurrence Time: 09:46:03.328 Level: Information Detailed Information: Request starting HTTP/2 GET https://localhost:44307/swagger/index.html - - Occurrence Time: 09:46:03.760 Level: Information Detailed Information: Request finished HTTP/2 GET https://localhost:44307/swagger/index.html - - - 200 - text/html;charset=utf-8 434.8918ms Occurrence Time: 09:46:03.949 Level: Information Detailed Information: Request starting HTTP/2 GET https://localhost:44307/swagger/v1/swagger.json - - Occurrence Time: 09:46:04.161 Level: Information Detailed Information: Request finished HTTP/2 GET https://localhost:44307/swagger/v1/swagger.json - - - 200 - application/json;charset=utf-8 212.2678ms Occurrence Time: 09:46:10.729 Level: Information Detailed Information: Request starting HTTP/2 GET https://localhost:44307/UserInfot/Get - - Occurrence Time: 09:46:10.774 Level: Information Detailed Information: Executing endpoint '"WebApplication1.Controllers.UserInfotController.Get (SuperNode.UserPrivilegeCenter.API)"' Occurrence Time: 09:46:10.798 Level: Information Detailed Information: Route matched with "{action = \"Get\", controller = \"UserInfot\"}". Executing controller action with signature "System.Collections.Generic.List`1[SuperNode.UserPrivilegeCenter.Entities.UserInfo] Get()" on controller "WebApplication1.Controllers.UserInfotController" ("SuperNode.UserPrivilegeCenter.API"). Occurrence Time: 09:46:10.805 Level: Information Detailed Information: Executing "ObjectResult", writing value of type '"System.Collections.Generic.List`1[[SuperNode.UserPrivilegeCenter.Entities.UserInfo, SuperNode.UserPrivilegeCenter, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]"'. Occurrence Time: 09:46:10.828 Level: Information Detailed Information: Executed action "WebApplication1.Controllers.UserInfotController.Get (SuperNode.UserPrivilegeCenter.API)" in 25.3773ms Occurrence Time: 09:46:10.828 Level: Information Detailed Information: Executed endpoint '"WebApplication1.Controllers.UserInfotController.Get (SuperNode.UserPrivilegeCenter.API)"' Occurrence Time: 09:46:10.829 Level: Information Detailed Information: Request finished HTTP/2 GET https://localhost:44307/UserInfot/Get - - - 200 - application/json;+charset=utf-8 99.8546ms Occurrence Time: 09:46:12.740 Level: Information Detailed Information: Request starting HTTP/2 GET https://localhost:44307/UserInfot/Get - - Occurrence Time: 09:46:12.741 Level: Information Detailed Information: Executing endpoint '"WebApplication1.Controllers.UserInfotController.Get (SuperNode.UserPrivilegeCenter.API)"' Occurrence Time: 09:46:12.741 Level: Information Detailed Information: Route matched with "{action = \"Get\", controller = \"UserInfot\"}". Executing controller action with signature "System.Collections.Generic.List`1[SuperNode.UserPrivilegeCenter.Entities.UserInfo] Get()" on controller "WebApplication1.Controllers.UserInfotController" ("SuperNode.UserPrivilegeCenter.API"). Occurrence Time: 09:46:12.753 Level: Information Detailed Information: Executing "ObjectResult", writing value of type '"System.Collections.Generic.List`1[[SuperNode.UserPrivilegeCenter.Entities.UserInfo, SuperNode.UserPrivilegeCenter, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]"'. Occurrence Time: 09:46:12.754 Level: Information Detailed Information: Executed action "WebApplication1.Controllers.UserInfotController.Get (SuperNode.UserPrivilegeCenter.API)" in 12.8913ms Occurrence Time: 09:46:12.755 Level: Information Detailed Information: Executed endpoint '"WebApplication1.Controllers.UserInfotController.Get (SuperNode.UserPrivilegeCenter.API)"' Occurrence Time: 09:46:12.755 Level: Information Detailed Information: Request finished HTTP/2 GET https://localhost:44307/UserInfot/Get - - - 200 - application/json;+charset=utf-8 15.5016ms