using Microsoft.AspNetCore.Hosting; using Serilog; using Serilog.Events; using System; using System.IO; using System.Text; namespace Microsoft.Extensions.Hosting { /// /// Serilog 日志拓展 /// public static class SerilogHostingExtensions { /// /// 添加默认日志拓展 /// /// /// /// IWebHostBuilder public static IWebHostBuilder UseSerilogDefault(this IWebHostBuilder hostBuilder, Action configAction = default) { hostBuilder.UseSerilog((context, configuration) => { // 加载配置文件 var config = configuration .ReadFrom.Configuration(context.Configuration) .Enrich.FromLogContext(); if (configAction != null) configAction.Invoke(config); else { var hasWriteTo = context.Configuration["Serilog:WriteTo:0:Name"]; if (hasWriteTo == null) { config.WriteTo.Console(outputTemplate: "[{Timestamp:HH:mm:ss} {Level:u3}] {Message:lj} {Properties:j}{NewLine}{Exception}") .WriteTo.File(Path.Combine(AppContext.BaseDirectory, "logs", "application.log"), LogEventLevel.Information, rollingInterval: RollingInterval.Day, retainedFileCountLimit: null, encoding: Encoding.UTF8); } } }); return hostBuilder; } /// /// 添加默认日志拓展 /// /// /// /// public static IHostBuilder UseSerilogDefault(this IHostBuilder builder, Action configAction = default) { builder.UseSerilog((context, configuration) => { // 加载配置文件 var config = configuration .ReadFrom.Configuration(context.Configuration) .Enrich.FromLogContext(); if (configAction != null) configAction.Invoke(config); else { var hasWriteTo = context.Configuration["Serilog:WriteTo:0:Name"]; if (hasWriteTo == null) { config.WriteTo.Console(outputTemplate: "[{Timestamp:HH:mm:ss} {Level:u3}] {Message:lj} {Properties:j}{NewLine}{Exception}") .WriteTo.File(Path.Combine("logs", "application.log"), LogEventLevel.Information, rollingInterval: RollingInterval.Day, retainedFileCountLimit: null, encoding: Encoding.UTF8); } } }); return builder; } } }