欢迎光临
我的个人博客网站

.NET Core 下使用 Serilog 记录日志


Serilog

Like many other libraries for .NET, Serilog provides diagnostic logging to files, the console, and elsewhere. It is easy to set up, has a clean API, and is portable between recent .NET platforms.
Unlike other logging libraries, Serilog is built with powerful structured event data in mind.

最佳实践

控制台项目

在项目中添加下面几个组件包

Install-Package Serilog.Extensions.Logging Install-Package Serilog.Sinks.Console Install-Package Serilog.Sinks.File 
class Program {     static async Task Main(string[] args)     {         Log.Logger = new LoggerConfiguration()            .MinimumLevel.Information()            .MinimumLevel.Override("Microsoft", LogEventLevel.Warning) #if DEBUG             .MinimumLevel.Override("Xxx", LogEventLevel.Debug) #else             .MinimumLevel.Override("Xxx", LogEventLevel.Information) #endif            .Enrich.FromLogContext()            .WriteTo.File(Path.Combine(Directory.GetCurrentDirectory(), "Logs/logs.txt"))            .WriteTo.Console()            .CreateLogger();          await CreateHostBuilder(args).RunConsoleAsync();     }      public static IHostBuilder CreateHostBuilder(string[] args) =>         Host.CreateDefaultBuilder(args)             .ConfigureLogging((context, logging) => logging.ClearProviders())             .ConfigureServices((hostContext, services) =>             {                 services.AddHostedService<XxxHostedService>();             }); } 
//XxxHostedService.cs public class XxxHostedService : IHostedService {     private readonly IHostApplicationLifetime _hostApplicationLifetime;      public XxxHostedService(IHostApplicationLifetime hostApplicationLifetime)     {         _hostApplicationLifetime = hostApplicationLifetime;     }      public async Task StartAsync(CancellationToken cancellationToken)     {         using var application = AbpApplicationFactory.Create<XxxModule>(options =>         {             options.UseAutofac();             options.Services.AddLogging(c => c.AddSerilog());         });         application.Initialize();          var service = await application.ServiceProvider.GetRequiredService<XxxService>();         service.XxxAsync();          application.Shutdown();          _hostApplicationLifetime.StopApplication();     }      public Task StopAsync(CancellationToken cancellationToken) => Task.CompletedTask; } 

AspNetCore项目

在项目中添加下面几个组件包

Install-Package Serilog.AspNetCore Install-Package Serilog.Sinks.Async Install-Package Serilog.Sinks.File 
public static async Task Main(string[] args) {     Log.Logger = new LoggerConfiguration() #if DEBUG         .MinimumLevel.Debug() #else         .MinimumLevel.Information() #endif         .MinimumLevel.Override("Microsoft", LogEventLevel.Information)         .Enrich.FromLogContext()         .WriteTo.Async(c => c.File($"Logs/{DateTime.Now:yyyy/MMdd}/logs.txt"))         .CreateLogger();          try         {             Log.Information("Starting Xxx.");              await CreateHostBuilder(args).Build().RunAsync();         }         catch (Exception ex)         {             Log.Fatal(ex, "Xxx terminated unexpectedly!");         }         finally         {             Log.CloseAndFlush();         }     }      internal static IHostBuilder CreateHostBuilder(string[] args) =>         Host.CreateDefaultBuilder(args)             .ConfigureWebHostDefaults(webBuilder =>             {                 webBuilder.UseIISIntegration()                           .UseStartup<Startup>();             }).UseAutofac().UseSerilog(); } 
赞(0) 打赏
未经允许不得转载:张拓的天空 » .NET Core 下使用 Serilog 记录日志
分享到: 更多 (0)

评论 抢沙发

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址

专业的IT技术经验分享 更专业 更方便

联系我们本站主机

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

微信扫一扫打赏