using Serilog; using Serilog.Sinks.Grafana.Loki; using System; using YuanXuan.IM.Api.CollectionExtensions; namespace YuanXuan.IM.Api.CollectionExtensions { public static class SerilogServiceCollectionExtensions { /// /// 添加Serilog /// /// /// /// public static IServiceCollection AddSerilog(this IServiceCollection services, IConfiguration configuration, IHostBuilder hostBuilder, IHostEnvironment environment) { var labels = new List { new LokiLabel { Key="app", Value=environment.ApplicationName }, new LokiLabel { Key="env", Value=environment.EnvironmentName }, }; // 配置 Serilog var logger = new LoggerConfiguration() .WriteTo.Console() .Enrich.FromLogContext(); //if (environment.IsDevelopment()) //{ logger.MinimumLevel.Information() .WriteTo.GrafanaLoki(configuration["GrafanaLoki:LokiUri"], labels, new List() { //"RequestId","Path" }, tenant: configuration["GrafanaLoki:TenantId"]); //} //else //{ // logger.MinimumLevel.Information() // .WriteTo.GrafanaLoki(configuration["GrafanaLoki:LokiUri"], labels); //} Log.Logger = logger.CreateLogger(); services.AddSerilog(Log.Logger); return services; } } }