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
celeron533 authored May 11, 2020

Verified

This commit was created on GitHub.com and signed with GitHub’s verified signature.
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
@@ -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)
{
@@ -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,
@@ -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)

0 comments on commit 7da1252

Please sign in to comment.