void Application_Start(object sender, EventArgs e) { // String resources TextProvider.Init(); // Work folder string wfpath = HttpRuntime.AppDomainAppPath; wfpath = Path.Combine(wfpath, "_data"); wfpath = Path.Combine(wfpath, "work"); workFolder = wfpath; // Unihanzi repository string binFilePath = HttpRuntime.AppDomainAppPath; binFilePath = Path.Combine(binFilePath, "_data"); binFilePath = Path.Combine(binFilePath, "unihanzi.bin"); hwIfno = new HeadwordInfo(binFilePath); // Some static config parameters AppSettingsReader asr = new AppSettingsReader(); gaCode = asr.GetValue("gaCode", typeof(string)).ToString(); string tzname = asr.GetValue("timeZone", typeof(string)).ToString(); timeZoneInfo = TimeZoneInfo.FindSystemTimeZoneById(tzname); }
public Startup(IHostingEnvironment env, ILoggerFactory loggerFactory) { this.env = env; this.loggerFactory = loggerFactory; // What am I today? HanDeDict or CHDICT? if (Environment.GetEnvironmentVariable("MUTATION") == "CHD") { mut = Mutation.CHD; } else if (Environment.GetEnvironmentVariable("MUTATION") == "HDD") { mut = Mutation.HDD; } else { throw new Exception("Environment variable MUTATION missing value invalid. Supported: CHD, HDD."); } // Now that we know our mutatio, init text provider singleton. TextProvider.Init(mut); var builder = new ConfigurationBuilder() .SetBasePath(env.ContentRootPath) .AddJsonFile("appsettings.json", optional: true) .AddJsonFile("appsettings.devenv.json", optional: true) .AddEnvironmentVariables(); // Config specific to mutation and hostong environment string cfgFileName = null; if (env.IsProduction() && mut == Mutation.HDD) { cfgFileName = "/etc/zdo/zdo-hdd-live/appsettings.json"; } if (env.IsStaging() && mut == Mutation.HDD) { cfgFileName = "/etc/zdo/zdo-hdd-stage/appsettings.json"; } if (env.IsProduction() && mut == Mutation.CHD) { cfgFileName = "/etc/zdo/zdo-chd-live/appsettings.json"; } if (env.IsStaging() && mut == Mutation.CHD) { cfgFileName = "/etc/zdo/zdo-chd-stage/appsettings.json"; } if (cfgFileName != null && File.Exists(cfgFileName)) { builder.AddJsonFile(cfgFileName, optional: false); } config = builder.Build(); // If running in production or staging, will log to file. Initialize Serilog here. if (!env.IsDevelopment()) { var seriConf = new LoggerConfiguration() .MinimumLevel.Information() .WriteTo.File(config["logFileName"]); if (config["logLevel"] == "Trace") { seriConf.MinimumLevel.Verbose(); } else if (config["logLevel"] == "Debug") { seriConf.MinimumLevel.Debug(); } else if (config["logLevel"] == "Information") { seriConf.MinimumLevel.Information(); } else if (config["logLevel"] == "Warning") { seriConf.MinimumLevel.Warning(); } else if (config["logLevel"] == "Error") { seriConf.MinimumLevel.Error(); } else { seriConf.MinimumLevel.Fatal(); } Log.Logger = seriConf.CreateLogger(); } // Log to console (debug) or file (otherwise). // Must do here, so log capture errors if singleton services throw at startup. LogLevel ll = LogLevel.Critical; if (config["logLevel"] == "Trace") { ll = LogLevel.Trace; } else if (config["logLevel"] == "Debug") { ll = LogLevel.Debug; } else if (config["logLevel"] == "Information") { ll = LogLevel.Information; } else if (config["logLevel"] == "Warning") { ll = LogLevel.Warning; } else if (config["logLevel"] == "Error") { ll = LogLevel.Error; } if (env.IsDevelopment()) { loggerFactory.AddConsole(ll); } else { loggerFactory.AddSerilog(); } }