Skip to content

Commit

Permalink
Merge pull request #2887 from Stzx/master
Browse files Browse the repository at this point in the history
Fix nLogConfig NRE
  • Loading branch information
celeron533 authored May 11, 2020
2 parents c13292b + 2acfefa commit 7da1252
Showing 1 changed file with 28 additions and 27 deletions.
55 changes: 28 additions & 27 deletions shadowsocks-csharp/Model/Configuration.cs
Original file line number Diff line number Diff line change
Expand Up @@ -93,10 +93,11 @@ public static bool ChecksServer(Server server)

public static Configuration Load()
{
Configuration config;
try
{
string configContent = File.ReadAllText(CONFIG_FILE);
Configuration config = JsonConvert.DeserializeObject<Configuration>(configContent);
config = JsonConvert.DeserializeObject<Configuration>(configContent);
config.isDefault = false;
if (UpdateChecker.Asset.CompareVersion(UpdateChecker.Version, config.version ?? "0") > 0)
{
Expand Down Expand Up @@ -124,37 +125,12 @@ public static Configuration Load()
//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,
Expand All @@ -169,6 +145,31 @@ public static Configuration Load()
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)
Expand Down

0 comments on commit 7da1252

Please sign in to comment.