using Microsoft.Extensions.Configuration; using Microsoft.Extensions.DependencyInjection; using Serilog.Events; using Serilog; using System; using System.Collections.Generic; using System.Text; using Serilog.Sinks.SystemConsole.Themes; using Serilog.Filters; namespace Utility { public static class ServiceCollectionExtensions { const string template = "时间: {Timestamp:yyyy-MM-dd HH:mm:ss}{NewLine}来源: {SourceContext}{NewLine}内容: [{Level:u3}] {Message}{NewLine}{Exception}{NewLine}"; /// /// 添加配置Serilog /// /// /// /// public static IServiceCollection AddConfigSerilog(this IServiceCollection services) { // 创建Serilog记录日志 Log.Logger = new LoggerConfiguration() .MinimumLevel.Information() .MinimumLevel.Override("Microsoft", LogEventLevel.Warning) .MinimumLevel.Override("Microsoft.AspNetCore", LogEventLevel.Fatal) .MinimumLevel.Override("Quartz", LogEventLevel.Warning) .MinimumLevel.Override("Serilog", LogEventLevel.Information) // 全部日志写入到Console .WriteTo.Console() .WriteTo.Async(c => c.Console( theme: AnsiConsoleTheme.Literate, outputTemplate: template)) // Debug日志写入到文件 //.WriteTo.Async(c => c.File( // path: "Logs/Debug_.txt", // rollingInterval: RollingInterval.Day, // fileSizeLimitBytes: 1024 * 1024 * 10, // retainedFileCountLimit: 100, // outputTemplate: template, // restrictedToMinimumLevel: LogEventLevel.Debug)) // Information日志写入到文件 .WriteTo.Async(c => c.File( path: "Logs/Information_.txt", rollingInterval: RollingInterval.Day, fileSizeLimitBytes: 1024 * 1024 * 10, retainedFileCountLimit: 100, outputTemplate: template, restrictedToMinimumLevel: LogEventLevel.Information)) // Warning日志写入到文件 .WriteTo.Async(c => c.File( path: "Logs/Warning_.txt", rollingInterval: RollingInterval.Day, fileSizeLimitBytes: 1024 * 1024 * 10, retainedFileCountLimit: 100, outputTemplate: template, restrictedToMinimumLevel: LogEventLevel.Warning)) // Error日志写入到文件 .WriteTo.Async(c => c.File( path: "Logs/Error_.txt", rollingInterval: RollingInterval.Day, fileSizeLimitBytes: 1024 * 1024 * 10, retainedFileCountLimit: 1000, outputTemplate: template, restrictedToMinimumLevel: LogEventLevel.Error)) .CreateLogger(); services.AddSerilog(); return services; } } }