using Microsoft.AspNetCore; using Microsoft.AspNetCore.Builder; using Microsoft.AspNetCore.Hosting; using Microsoft.Extensions.Configuration; using Microsoft.Extensions.Hosting; using Serilog; using Serilog.Formatting.Json; using Serilog.Sinks.Elasticsearch; using Serilog.Sinks.RollingFile; using System; using System.IO; using System.Linq; using System.Text; namespace StudyCenter { public class Program { public static void Main(string[] args) { Console.OutputEncoding = Encoding.UTF8; var config = new ConfigurationBuilder().SetBasePath(Directory.GetCurrentDirectory()) .AddJsonFile("appsettings.json", optional: true) .Build(); WebHost.CreateDefaultBuilder(args) .ConfigureAppConfiguration((c, o) => { o.AddNacosConfiguration(o => { var section = config.GetSection("nacos"); o.ServerAddresses = section.GetValue("ServerAddresses").Split(';').ToList(); o.Optional = section.GetValue("Optional"); o.DataId = section.GetValue("DataId"); o.Group = section.GetValue("Group"); o.Tenant = section.GetValue("Tenant"); }); }) .ConfigureLogging((c, o) => //http://localhost:9200/_search?size=100 { var url = c.Configuration["elasticsearch:url"]; Log.Logger = new LoggerConfiguration() .WriteTo.Elasticsearch(new ElasticsearchSinkOptions(new Uri(url)) { TypeName = "_doc", AutoRegisterTemplate = true, AutoRegisterTemplateVersion = AutoRegisterTemplateVersion.ESv7, FailureCallback = e => Console.WriteLine("Unable to submit event " + e.MessageTemplate), EmitEventFailure = EmitEventFailureHandling.WriteToSelfLog | EmitEventFailureHandling.WriteToFailureSink | EmitEventFailureHandling.RaiseCallback, FailureSink = new RollingFileSink("logs/log.txt", new JsonFormatter(), fileSizeLimitBytes: 100 * 1024 * 1024, 1) }) .CreateLogger(); o.AddSerilog(); }) .UseStartup() .Build() .Run(); } } }