This commit is contained in:
2020-05-18 15:59:40 +00:00
parent 2b1c84ade0
commit 49ef9d1a20
3 changed files with 55 additions and 124 deletions

View File

@@ -153,40 +153,36 @@ namespace AyaNova
}
// NLog: setup the logger first to catch all errors
var logger = NLogBuilder.ConfigureNLog(logConfig).GetLogger("Init");//.GetCurrentClassLogger();
var logger = NLogBuilder.ConfigureNLog(logConfig).GetLogger("BOOT");
//This is the first log entry
logger.Info("AYANOVA SERVER BOOTING (log level: \"{0}\")", ServerBootConfig.AYANOVA_LOG_LEVEL);
logger.Info(AyaNovaVersion.FullNameAndVersion);
logger.Info($"AYANOVA SERVER {AyaNovaVersion.VersionString} BOOTING");
//log configuration
try
{
var AyaNovaConfig=config.AsEnumerable().Where(m => m.Key.StartsWith("AYANOVA") && m.Key!="AYANOVA_JWT_SECRET").Select(m=>m.Key+ "="+ m.Value).ToList();
{
var AyaNovaConfig=config.AsEnumerable().Where(m => m.Key.StartsWith("AYANOVA") && m.Key!="AYANOVA_JWT_SECRET").Select(m=>m.Key+ "="+ m.Value).ToList();
var DiagConfig=string.Join(",", AyaNovaConfig);
DiagConfig=DbUtil.PasswordRedactedConnectionString(DiagConfig);
logger.Info($"BOOT: configuration {DiagConfig}");
logger.Info($"Config {DiagConfig}");
}
catch (Exception ex)
{
logger.Error(ex, "BOOT: error fetching configuration");
logger.Error(ex, "Error fetching configuration");
}
logger.Debug($"BOOT: Full configuration is {config.GetDebugView()}");
logger.Debug("BOOT: Log path is \"{0}\" ", ServerBootConfig.AYANOVA_LOG_PATH);
logger.Debug($"Full configuration is {config.GetDebugView()}");
if (ServerBootConfig.AYANOVA_LOG_ENABLE_LOGGER_DIAGNOSTIC_LOG)
{
logger.Warn("BOOT: AYANOVA_LOG_ENABLE_LOGGER_DIAGNOSTIC_LOG is enabled! Disable as soon as no longer required.");
}
if (ServerBootConfig.AYANOVA_LOG_ENABLE_LOGGER_DIAGNOSTIC_LOG)
logger.Warn("AYANOVA_LOG_ENABLE_LOGGER_DIAGNOSTIC_LOG is enabled, this will cause the server to run very slowly");
//Log environmental settings
logger.Info("BOOT: OS - {0}", Environment.OSVersion.ToString());
logger.Debug("BOOT: Machine - {0}", Environment.MachineName);
logger.Debug("BOOT: User - {0}", Environment.UserName);
logger.Debug("BOOT: .Net Version - {0}", Environment.Version.ToString());
logger.Debug("BOOT: CPU count - {0}", Environment.ProcessorCount);
logger.Debug("BOOT: Default language - \"{0}\"", ServerBootConfig.AYANOVA_DEFAULT_TRANSLATION);
logger.Info("OS - {0}", Environment.OSVersion.ToString());
logger.Debug("Machine - {0}", Environment.MachineName);
logger.Debug("User - {0}", Environment.UserName);
logger.Debug(".Net Version - {0}", Environment.Version.ToString());
logger.Debug("CPU count - {0}", Environment.ProcessorCount);
#endregion
@@ -201,7 +197,7 @@ namespace AyaNova
//AyaNova won't be able to serve static files
if (!Directory.Exists(wwwRootFolder))
{
var err = string.Format("BOOT: E1010 - AyaNova was not started in the correct folder. AyaNova must be started from the folder that contains the \"wwwroot\" folder but was started instead from this folder: \"{0}\" which does not contain the wwwroot folder.", startFolder);
var err = string.Format("E1010 - AyaNova was not started in the correct folder. AyaNova must be started from the folder that contains the \"wwwroot\" folder but was started instead from this folder: \"{0}\" which does not contain the wwwroot folder.", startFolder);
logger.Fatal(err);
throw new System.ApplicationException(err);
}
@@ -213,7 +209,7 @@ namespace AyaNova
}
catch (Exception e)
{
logger.Fatal(e, "BOOT: E1090 - AyaNova server can't start due to unexpected exception during initialization");
logger.Fatal(e, "E1090 - AyaNova server can't start due to unexpected exception during initialization");
throw;
}
finally
@@ -231,7 +227,7 @@ namespace AyaNova
public static IHostBuilder BuildHost(string[] args, NLog.Logger logger)
{
logger.Debug("BOOT: building host");
logger.Debug("Building host");
var configuration = new ConfigurationBuilder().AddCommandLine(args).Build();
return Host.CreateDefaultBuilder(args)
@@ -289,73 +285,8 @@ namespace AyaNova
logging.ClearProviders();
})
.UseNLog(); // NLog: setup NLog for Dependency injection
});
}
/* Dotnet 2.2 buildwebhost will be deprecated in favor of buildhost
public static IWebHost BuildWebHost(string[] args, NLog.Logger logger)
{
logger.Debug("BOOT: building web host");
var configuration = new ConfigurationBuilder().AddCommandLine(args).Build();
return WebHost.CreateDefaultBuilder(args)
.CaptureStartupErrors(true)
.UseSetting("detailedErrors", "true")
.UseUrls(ServerBootConfig.AYANOVA_USE_URLS)//default port and urls, set first can be overridden by any later setting here
.UseConfiguration(configuration)//support command line override of port (dotnet run urls=http://*:8081)
.UseIISIntegration()//support IIS integration just in case, it appears here to override prior settings if necessary (port)
.ConfigureMetricsWithDefaults(builder =>
{
if (ServerBootConfig.AYANOVA_METRICS_USE_INFLUXDB)
{
builder.Report.ToInfluxDb(
options =>
{
options.InfluxDb.BaseUri = new Uri(ServerBootConfig.AYANOVA_METRICS_INFLUXDB_BASEURL);
options.InfluxDb.Database = ServerBootConfig.AYANOVA_METRICS_INFLUXDB_DBNAME;
if (!string.IsNullOrWhiteSpace(ServerBootConfig.AYANOVA_METRICS_INFLUXDB_CONSISTENCY))
{
options.InfluxDb.Consistenency = ServerBootConfig.AYANOVA_METRICS_INFLUXDB_CONSISTENCY;
}
options.InfluxDb.UserName = ServerBootConfig.AYANOVA_METRICS_INFLUXDB_USERNAME;
options.InfluxDb.Password = ServerBootConfig.AYANOVA_METRICS_INFLUXDB_PASSWORD;
if (!string.IsNullOrWhiteSpace(ServerBootConfig.AYANOVA_METRICS_INFLUXDB_RETENTION_POLICY))
{
options.InfluxDb.RetentionPolicy = ServerBootConfig.AYANOVA_METRICS_INFLUXDB_RETENTION_POLICY;
}
options.InfluxDb.CreateDataBaseIfNotExists = true;
options.HttpPolicy.BackoffPeriod = TimeSpan.FromSeconds(30);
options.HttpPolicy.FailuresBeforeBackoff = 5;
options.HttpPolicy.Timeout = TimeSpan.FromSeconds(10);
//options.MetricsOutputFormatter = new App.Metrics.Formatters.Json.MetricsJsonOutputFormatter();
//options.Filter = filter;
options.FlushInterval = TimeSpan.FromSeconds(20);
});
}
})
.UseMetricsEndpoints(opt =>
{
opt.EnvironmentInfoEndpointEnabled = false;
opt.MetricsEndpointEnabled = false;
opt.MetricsTextEndpointEnabled = false;
})
.UseMetrics()
.UseStartup<Startup>()
.ConfigureLogging((context, logging) =>
{
// clear all previously registered providers
//https://stackoverflow.com/a/46336988/8939
logging.ClearProviders();
})
.UseNLog() // NLog: setup NLog for Dependency injection
.Build();
}
*/
}
}//eoc