mirror of
https://github.com/jcreek/aspnetcore5-with-postgres-identity-serilog-elasticsearch.git
synced 2026-07-13 02:43:45 +00:00
feat(*): Add base project files
This commit is contained in:
@@ -0,0 +1,87 @@
|
||||
using Microsoft.AspNetCore.Hosting;
|
||||
using Microsoft.Extensions.Configuration;
|
||||
using Microsoft.Extensions.Hosting;
|
||||
using Serilog;
|
||||
using Serilog.Exceptions;
|
||||
using Serilog.Exceptions.Core;
|
||||
using Serilog.Exceptions.EntityFrameworkCore.Destructurers;
|
||||
using Serilog.Sinks.Elasticsearch;
|
||||
using System;
|
||||
using System.Reflection;
|
||||
|
||||
namespace My.ProjectName
|
||||
{
|
||||
public class Program
|
||||
{
|
||||
public static void Main(string[] args)
|
||||
{
|
||||
// Configure logging first
|
||||
ConfigureLogging();
|
||||
|
||||
// Then create the host, so that if the host fails we can log errors
|
||||
CreateHost(args);
|
||||
}
|
||||
|
||||
public static IHostBuilder CreateHostBuilder(string[] args) =>
|
||||
Host.CreateDefaultBuilder(args)
|
||||
.ConfigureWebHostDefaults(webBuilder =>
|
||||
{
|
||||
webBuilder.UseStartup<Startup>();
|
||||
})
|
||||
.ConfigureAppConfiguration(configuration =>
|
||||
{
|
||||
configuration.AddJsonFile("appsettings.json", optional: false, reloadOnChange: true);
|
||||
configuration.AddJsonFile(
|
||||
$"appsettings.{Environment.GetEnvironmentVariable("ASPNETCORE_ENVIRONMENT")}.json",
|
||||
optional: true);
|
||||
})
|
||||
.UseSerilog();
|
||||
|
||||
private static void CreateHost(string[] args)
|
||||
{
|
||||
try
|
||||
{
|
||||
CreateHostBuilder(args).Build().Run();
|
||||
}
|
||||
catch (System.Exception ex)
|
||||
{
|
||||
Log.Fatal($"Failed to start {Assembly.GetExecutingAssembly().GetName().Name}", ex);
|
||||
throw;
|
||||
}
|
||||
}
|
||||
|
||||
private static void ConfigureLogging()
|
||||
{
|
||||
var environment = Environment.GetEnvironmentVariable("ASPNETCORE_ENVIRONMENT");
|
||||
var configuration = new ConfigurationBuilder()
|
||||
.AddJsonFile("appsettings.json", optional: false, reloadOnChange: true)
|
||||
.AddJsonFile(
|
||||
$"appsettings.{Environment.GetEnvironmentVariable("ASPNETCORE_ENVIRONMENT")}.json",
|
||||
optional: true)
|
||||
.Build();
|
||||
|
||||
Log.Logger = new LoggerConfiguration()
|
||||
.Enrich.FromLogContext()
|
||||
.Enrich.WithExceptionDetails(new DestructuringOptionsBuilder()
|
||||
.WithDefaultDestructurers()
|
||||
.WithDestructurers(new[] { new DbUpdateExceptionDestructurer() }))
|
||||
.Enrich.WithMachineName()
|
||||
.WriteTo.Debug()
|
||||
.WriteTo.Console()
|
||||
.WriteTo.File("logs/log-.log", rollingInterval: RollingInterval.Day, shared: true, retainedFileCountLimit: 7)
|
||||
.WriteTo.Elasticsearch(ConfigureElasticSink(configuration, environment))
|
||||
.Enrich.WithProperty("Environment", environment)
|
||||
.ReadFrom.Configuration(configuration)
|
||||
.CreateLogger();
|
||||
}
|
||||
|
||||
private static ElasticsearchSinkOptions ConfigureElasticSink(IConfigurationRoot configuration, string environment)
|
||||
{
|
||||
return new ElasticsearchSinkOptions(new Uri(configuration["ElasticConfiguration:Uri"]))
|
||||
{
|
||||
AutoRegisterTemplate = true,
|
||||
IndexFormat = $"{Assembly.GetExecutingAssembly().GetName().Name.ToLower().Replace(".", "-")}-{environment?.ToLower().Replace(".", "-")}-{DateTime.UtcNow:yyyy-MM}"
|
||||
};
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user