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.
82 lines
3.2 KiB
82 lines
3.2 KiB
using Infrastructure.Extensions;
|
|
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)
|
|
{
|
|
var loggerConfiguration = new LoggerConfiguration().ReadFrom.Configuration(config, ConfigurationAssemblySource.AlwaysScanDllFiles);
|
|
loggerConfiguration.WriteTo.Console();
|
|
var logType = config.GetAppSetting("Log", "File");
|
|
if (logType == "Elasticsearch")
|
|
{
|
|
loggerConfiguration.WriteTo.Elasticsearch(new ElasticsearchSinkOptions(new Uri(config.GetConnectionString("Log.Elasticsearch")))
|
|
{
|
|
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)
|
|
});
|
|
}
|
|
else
|
|
{
|
|
loggerConfiguration.WriteTo
|
|
.File("logs/log.txt", rollOnFileSizeLimit: true, fileSizeLimitBytes: 100 * 1024 * 1024, rollingInterval: RollingInterval.Infinite);
|
|
}
|
|
return loggerConfiguration.CreateLogger();
|
|
}
|
|
}
|
|
} |