You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
73 lines
2.7 KiB
73 lines
2.7 KiB
using Microsoft.AspNetCore;
|
|
using Microsoft.AspNetCore.Builder;
|
|
using Microsoft.AspNetCore.Hosting;
|
|
using Microsoft.Extensions.Configuration;
|
|
using Microsoft.Extensions.Hosting;
|
|
using Serilog;
|
|
using Serilog.Formatting.Elasticsearch;
|
|
using Serilog.Formatting.Json;
|
|
using Serilog.Settings.Configuration;
|
|
using Serilog.Sinks.Elasticsearch;
|
|
using Serilog.Sinks.RollingFile;
|
|
using System;
|
|
using System.IO;
|
|
using System.Text;
|
|
|
|
namespace Platform
|
|
{
|
|
public class Program
|
|
{
|
|
public static void Main(string[] args)
|
|
{
|
|
Console.OutputEncoding = Encoding.UTF8;
|
|
IConfigurationRoot config = GetConfig();
|
|
Log.Logger = GetLogger(config);
|
|
|
|
try
|
|
{
|
|
Log.Information("web host start");
|
|
WebHost.CreateDefaultBuilder(args)
|
|
.UseConfiguration(config)
|
|
.UseSerilog()
|
|
.UseStartup<Startup>()
|
|
.Build()
|
|
.Run();
|
|
Log.Information("web host end");
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
Log.Fatal(ex, "Host terminated unexpectedly");
|
|
return;
|
|
}
|
|
finally
|
|
{
|
|
Log.CloseAndFlush();
|
|
}
|
|
}
|
|
|
|
private static IConfigurationRoot GetConfig()
|
|
{
|
|
return new ConfigurationBuilder().SetBasePath(Directory.GetCurrentDirectory())
|
|
.AddJsonFile("appsettings.json", optional: true, reloadOnChange: true)
|
|
.AddJsonFile($"appsettings.{Environment.GetEnvironmentVariable("ASPNETCORE_ENVIRONMENT")}.json", optional: true, reloadOnChange: true)
|
|
.Build();
|
|
}
|
|
|
|
private static ILogger GetLogger(IConfigurationRoot config)
|
|
{
|
|
return new LoggerConfiguration()
|
|
.ReadFrom.Configuration(config, ConfigurationAssemblySource.AlwaysScanDllFiles)
|
|
.WriteTo.Console()
|
|
.WriteTo.Elasticsearch(new ElasticsearchSinkOptions(new Uri(config.GetConnectionString("Log")))
|
|
{
|
|
AutoRegisterTemplate = true,
|
|
AutoRegisterTemplateVersion = AutoRegisterTemplateVersion.ESv7,
|
|
CustomFormatter = new ExceptionAsObjectJsonFormatter(renderMessage: true),
|
|
FailureCallback = e => Console.WriteLine("Unable to submit event " + e.MessageTemplate),
|
|
EmitEventFailure = EmitEventFailureHandling.WriteToSelfLog |EmitEventFailureHandling.WriteToFailureSink | EmitEventFailureHandling.RaiseCallback,
|
|
FailureSink = new RollingFileSink("logs/log.json", new JsonFormatter(), 100 * 1024 * 1024, 1, Encoding.UTF8)
|
|
})
|
|
.CreateLogger();
|
|
}
|
|
}
|
|
} |