diff --git a/aspnet-core/services/host/Lion.AbpPro.HttpApi.Host/AbpProHttpApiHostModule.cs b/aspnet-core/services/host/Lion.AbpPro.HttpApi.Host/AbpProHttpApiHostModule.cs index 116bc107..5bde6c93 100644 --- a/aspnet-core/services/host/Lion.AbpPro.HttpApi.Host/AbpProHttpApiHostModule.cs +++ b/aspnet-core/services/host/Lion.AbpPro.HttpApi.Host/AbpProHttpApiHostModule.cs @@ -110,10 +110,7 @@ namespace Lion.AbpPro app.UseAuditing(); app.UseAbpSerilogEnrichers(); - app.UseSerilogRequestLogging(opts => - { - opts.EnrichDiagnosticContext = SerilogToEsExtensions.EnrichFromRequest; - }); + app.UseUnitOfWork(); app.UseConfiguredEndpoints(endpoints => { endpoints.MapHealthChecks("/health"); }); app.UseHangfireDashboard("/hangfire", new DashboardOptions() diff --git a/aspnet-core/services/host/Lion.AbpPro.HttpApi.Host/Extensions/SerilogToEsExtensions.cs b/aspnet-core/services/host/Lion.AbpPro.HttpApi.Host/Extensions/SerilogToEsExtensions.cs index 04a43cef..41be70dd 100644 --- a/aspnet-core/services/host/Lion.AbpPro.HttpApi.Host/Extensions/SerilogToEsExtensions.cs +++ b/aspnet-core/services/host/Lion.AbpPro.HttpApi.Host/Extensions/SerilogToEsExtensions.cs @@ -2,38 +2,21 @@ using Microsoft.AspNetCore.Http; using Microsoft.Extensions.Configuration; using Serilog; using Serilog.Exceptions; -using Serilog.Exceptions.Core; using Serilog.Sinks.Elasticsearch; using System; using System.IO; using System.Text; using System.Threading.Tasks; -using Microsoft.Extensions.Hosting; namespace Lion.AbpPro.Extensions { public static class SerilogToEsExtensions { - public static void SetSerilogConfiguration(LoggerConfiguration loggerConfiguration, IConfiguration configuration, - IHostEnvironment hostingEnvironment) + public static void SetSerilogConfiguration(LoggerConfiguration loggerConfiguration, IConfiguration configuration) { - // 默认读取 configuration 中 "Serilog" 节点下的配置 - loggerConfiguration.ReadFrom.Configuration(configuration) - .Enrich.WithExceptionDetails() - .Enrich.WithExceptionDetails(new DestructuringOptionsBuilder() - .WithDefaultDestructurers() - ) - .Enrich.FromLogContext() - .WriteTo.Console(); - - if (hostingEnvironment.IsDevelopment()) - { - loggerConfiguration.WriteTo.File("logs/logs.txt", rollingInterval: RollingInterval.Day); - } - loggerConfiguration.WriteTo.File("logs/logs.txt", rollingInterval: RollingInterval.Day); + var writeToElasticSearch = configuration.GetValue("ElasticSearch:Enabled", false); - // LogToElasticSearch:Enabled = true 才输出至ES if (!writeToElasticSearch) return; diff --git a/aspnet-core/services/host/Lion.AbpPro.HttpApi.Host/Program.cs b/aspnet-core/services/host/Lion.AbpPro.HttpApi.Host/Program.cs index f49d42ac..4f650da3 100644 --- a/aspnet-core/services/host/Lion.AbpPro.HttpApi.Host/Program.cs +++ b/aspnet-core/services/host/Lion.AbpPro.HttpApi.Host/Program.cs @@ -1,6 +1,8 @@ using System; +using System.IO; using Lion.AbpPro.Extensions; using Microsoft.AspNetCore.Hosting; +using Microsoft.Extensions.Configuration; using Microsoft.Extensions.Hosting; using Serilog; using Serilog.Events; @@ -11,10 +13,30 @@ namespace Lion.AbpPro { public static void Main(string[] args) { - CreateHostBuilder(args).Build().Run(); + try + { + var configuration = new ConfigurationBuilder() + .SetBasePath(Directory.GetCurrentDirectory()) + .AddJsonFile($"appsettings.{Environment.GetEnvironmentVariable("ASPNETCORE_ENVIRONMENT") ?? ""}.json", true) + .Build(); + + Log.Logger = new LoggerConfiguration() + .ReadFrom.Configuration(configuration) + .Enrich.FromLogContext() + .CreateLogger(); + CreateHostBuilder(args).Build().Run(); + } + catch (Exception ex) + { + Log.Fatal(ex, "Host terminated unexpectedly!"); + } + finally + { + Log.CloseAndFlush(); + } } - public static IHostBuilder CreateHostBuilder(string[] args) => + private static IHostBuilder CreateHostBuilder(string[] args) => Host.CreateDefaultBuilder(args) .ConfigureWebHostDefaults(webBuilder => { @@ -23,10 +45,7 @@ namespace Lion.AbpPro }) .UseSerilog((context, loggerConfiguration) => { - SerilogToEsExtensions.SetSerilogConfiguration( - loggerConfiguration, - context.Configuration, - context.HostingEnvironment); + SerilogToEsExtensions.SetSerilogConfiguration(loggerConfiguration,context.Configuration); }).UseAutofac(); } -} +} \ No newline at end of file diff --git a/aspnet-core/services/host/Lion.AbpPro.HttpApi.Host/appsettings.json b/aspnet-core/services/host/Lion.AbpPro.HttpApi.Host/appsettings.json index 2a8b9868..870d93c5 100644 --- a/aspnet-core/services/host/Lion.AbpPro.HttpApi.Host/appsettings.json +++ b/aspnet-core/services/host/Lion.AbpPro.HttpApi.Host/appsettings.json @@ -1,5 +1,9 @@ { "Serilog": { + "Using": [ + "Serilog.Sinks.Console", + "Serilog.Sinks.RollingFile" + ], "MinimumLevel": { "Default": "Information", "Override": { @@ -7,9 +11,21 @@ "Volo.Abp": "Information", "Hangfire": "Information", "DotNetCore.CAP": "Information", - "Serilog.AspNetCore": "Information" + "Serilog.AspNetCore": "Information", + "Microsoft.EntityFrameworkCore": "Information" } - } + }, + "WriteTo": [ + { + "Name": "Console" + }, + { + "Name": "RollingFile", + "Args": { + "pathFormat": "logs/logs-{Date}.txt" + } + } + ] }, "App": { "SelfUrl": "http://localhost:44315", @@ -23,12 +39,9 @@ }, "Jwt": { "Audience": "LionAbpPro", - //客户端标识 "SecurityKey": "dzehzRz9a8asdfasfdadfasdfasdfafsdadfasbasdf=", "Issuer": "LionAbpPro", - //签发者 "ExpirationTime": 24 - //过期时间 hour }, "Cap": { "Enabled": "false",