From 2acfefa420ecf09c13fa1bdfcb34cc54b01deccd Mon Sep 17 00:00:00 2001 From: Stzx Date: Mon, 11 May 2020 14:37:43 +0800 Subject: [PATCH] Fix nLogConfig NRE --- shadowsocks-csharp/Model/Configuration.cs | 55 ++++++++++++----------- 1 file changed, 28 insertions(+), 27 deletions(-) diff --git a/shadowsocks-csharp/Model/Configuration.cs b/shadowsocks-csharp/Model/Configuration.cs index d7d596a7..cd68925f 100644 --- a/shadowsocks-csharp/Model/Configuration.cs +++ b/shadowsocks-csharp/Model/Configuration.cs @@ -93,10 +93,11 @@ namespace Shadowsocks.Model public static Configuration Load() { + Configuration config; try { string configContent = File.ReadAllText(CONFIG_FILE); - Configuration config = JsonConvert.DeserializeObject(configContent); + config = JsonConvert.DeserializeObject(configContent); config.isDefault = false; if (UpdateChecker.Asset.CompareVersion(UpdateChecker.Version, config.version ?? "0") > 0) { @@ -124,37 +125,12 @@ namespace Shadowsocks.Model //TODO if remote host(server) do not support IPv6 (or DNS resolve AAAA TYPE record) disable IPv6? config.proxy.CheckConfig(); - - try - { - config.nLogConfig = NLogConfig.LoadXML(); - switch (config.nLogConfig.GetLogLevel()) - { - case NLogConfig.LogLevel.Fatal: - case NLogConfig.LogLevel.Error: - case NLogConfig.LogLevel.Warn: - case NLogConfig.LogLevel.Info: - config.isVerboseLogging = false; - break; - case NLogConfig.LogLevel.Debug: - case NLogConfig.LogLevel.Trace: - config.isVerboseLogging = true; - break; - } - } - catch (Exception e) - { - // todo: route the error to UI since there is no log file in this scenario - logger.Error(e, "Cannot get the log level from NLog config file. Please check if the nlog config file exists with corresponding XML nodes."); - } - - return config; } catch (Exception e) { if (!(e is FileNotFoundException)) logger.LogUsefulException(e); - return new Configuration + config = new Configuration { index = 0, isDefault = true, @@ -169,6 +145,31 @@ namespace Shadowsocks.Model hotkey = new HotkeyConfig(), }; } + + try + { + config.nLogConfig = NLogConfig.LoadXML(); + switch (config.nLogConfig.GetLogLevel()) + { + case NLogConfig.LogLevel.Fatal: + case NLogConfig.LogLevel.Error: + case NLogConfig.LogLevel.Warn: + case NLogConfig.LogLevel.Info: + config.isVerboseLogging = false; + break; + case NLogConfig.LogLevel.Debug: + case NLogConfig.LogLevel.Trace: + config.isVerboseLogging = true; + break; + } + } + catch (Exception e) + { + // todo: route the error to UI since there is no log file in this scenario + logger.Error(e, "Cannot get the log level from NLog config file. Please check if the nlog config file exists with corresponding XML nodes."); + } + + return config; } public static void Save(Configuration config)