Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
24 commits
Select commit Hold shift + click to select a range
3ba5d23
Optimize Exception Handling
taooceros Jun 11, 2021
a450071
fix a variable name in Release
taooceros Jun 11, 2021
91dd1d3
inline initialization
taooceros Jun 11, 2021
d372526
Use Nlog Debug Target instead of direct print
taooceros Jun 11, 2021
a5f8017
Use NLog Exception Handler, and , NLog Debug Message Printer, and cha…
taooceros Jun 11, 2021
2527c1e
add new line before a message containing exception
taooceros Jun 11, 2021
9ea1f89
Refactor Log & Stopwatch.cs API signature
taooceros Jun 13, 2021
485573c
fix up release code
taooceros Jun 13, 2021
ce7f844
DirectoryInfoSearch.cs error revision
taooceros Jun 13, 2021
49f50ec
Merge upstream
taooceros Jun 22, 2021
09373c2
1. fix a small layout bug
taooceros Jun 22, 2021
b111159
fix a slight layout problem
taooceros Jun 22, 2021
0b23a3e
allow warning pass exception (for known exception)
taooceros Jun 22, 2021
aea610d
Refactor ProgramLogger (now ProgramExceptionLogger)
taooceros Jun 22, 2021
78e2019
small refactor
taooceros Jun 22, 2021
dc115e5
fix error
taooceros Jun 22, 2021
10c0c77
fix release
taooceros Jun 22, 2021
6e8a326
Merge branch 'dev' into ExceptionOpt
taooceros Jun 25, 2021
12b29b2
revert unintended remove of await TaskScheduler.Default back
taooceros Jun 25, 2021
4f5c021
Adjust Logging Format
taooceros Jun 25, 2021
1999708
check cancellation to avoid racing issue.
taooceros Jun 26, 2021
e6d1e96
assign api to ProgramExceptionLogger.cs
taooceros Jun 26, 2021
ea856bf
Revise ProgramExceptionLogger.cs
taooceros Jun 26, 2021
85128c0
Add padding and Remove one newline indicating Exception
taooceros Jun 26, 2021
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 2 additions & 2 deletions Flow.Launcher.Core/Configuration/Portable.cs
Original file line number Diff line number Diff line change
Expand Up @@ -47,7 +47,7 @@ public void DisablePortableMode()
}
catch (Exception e)
{
Log.Exception("|Portable.DisablePortableMode|Error occured while disabling portable mode", e);
Log.Exception(nameof(Portable),"Error occured while disabling portable mode", e);
}
}

Expand All @@ -71,7 +71,7 @@ public void EnablePortableMode()
}
catch (Exception e)
{
Log.Exception("|Portable.EnablePortableMode|Error occured while enabling portable mode", e);
Log.Exception(nameof(Portable),"Error occured while enabling portable mode", e);
}
}

Expand Down
22 changes: 11 additions & 11 deletions Flow.Launcher.Core/Plugin/JsonRPCPlugin.cs
Original file line number Diff line number Diff line change
Expand Up @@ -42,7 +42,7 @@ public List<Result> LoadContextMenus(Result selectedResult)
}
catch (Exception e)
{
Log.Exception($"|JsonRPCPlugin.LoadContextMenus|Exception on result <{selectedResult}>", e);
Log.Exception(nameof(JsonRPCPlugin), $"Exception on result <{selectedResult}>", e);
return null;
}
}
Expand Down Expand Up @@ -183,11 +183,11 @@ protected string Execute(ProcessStartInfo startInfo)
var error = standardError.ReadToEnd();
if (!string.IsNullOrEmpty(error))
{
Log.Error($"|JsonRPCPlugin.Execute|{error}");
Log.Error("JsonRPCPlugin", $"{error}");
return string.Empty;
}

Log.Error("|JsonRPCPlugin.Execute|Empty standard output and standard error.");
Log.Error("JsonRPCPlugin", "Empty standard output and standard error.");
return string.Empty;
}

Expand All @@ -204,9 +204,8 @@ protected string Execute(ProcessStartInfo startInfo)
}
catch (Exception e)
{
Log.Exception(
$"|JsonRPCPlugin.Execute|Exception for filename <{startInfo.FileName}> with argument <{startInfo.Arguments}>",
e);
Log.Exception(nameof(JsonRPCPlugin),
$"Exception for filename <{startInfo.FileName}> with argument <{startInfo.Arguments}>", e);
return string.Empty;
}
}
Expand All @@ -218,7 +217,7 @@ protected async Task<Stream> ExecuteAsync(ProcessStartInfo startInfo, Cancellati
using var process = Process.Start(startInfo);
if (process == null)
{
Log.Error("|JsonRPCPlugin.ExecuteAsync|Can't start new process");
Log.Error("JsonRPCPlugin", "Can't start new process");
return Stream.Null;
}

Expand All @@ -233,11 +232,11 @@ protected async Task<Stream> ExecuteAsync(ProcessStartInfo startInfo, Cancellati

if (!string.IsNullOrEmpty(error))
{
Log.Error($"|JsonRPCPlugin.ExecuteAsync|{error}");
Log.Error("JsonRPCPlugin", $"{error}");
return Stream.Null;
}

Log.Error("|JsonRPCPlugin.ExecuteAsync|Empty standard output and standard error.");
Log.Error("JsonRPCPlugin", "Empty standard output and standard error.");
return Stream.Null;
}

Expand All @@ -246,7 +245,8 @@ protected async Task<Stream> ExecuteAsync(ProcessStartInfo startInfo, Cancellati
catch (Exception e)
{
Log.Exception(
$"|JsonRPCPlugin.ExecuteAsync|Exception for filename <{startInfo.FileName}> with argument <{startInfo.Arguments}>",
"JsonRPCPlugin",
$"Exception for filename <{startInfo.FileName}> with argument <{startInfo.Arguments}>",
e);
return Stream.Null;
}
Expand All @@ -261,7 +261,7 @@ public async Task<List<Result>> QueryAsync(Query query, CancellationToken token)
}
catch (Exception e)
{
Log.Exception($"|JsonRPCPlugin.Query|Exception when query <{query}>", e);
Log.Exception(nameof(JsonRPCPlugin),$"Exception when query <{query}>", e);
return null;
}
}
Expand Down
10 changes: 5 additions & 5 deletions Flow.Launcher.Core/Plugin/PluginConfig.cs
Original file line number Diff line number Diff line change
Expand Up @@ -33,7 +33,7 @@ public static List<PluginMetadata> Parse(string[] pluginDirectories)
}
catch (Exception e)
{
Log.Exception($"|PluginConfig.ParsePLuginConfigs|Can't delete <{directory}>", e);
Log.Exception(nameof(PluginConfig),$"Can't delete <{directory}>", e);
}
}
else
Expand All @@ -54,7 +54,7 @@ private static PluginMetadata GetPluginMetadata(string pluginDirectory)
string configPath = Path.Combine(pluginDirectory, Constant.PluginMetadataFileName);
if (!File.Exists(configPath))
{
Log.Error($"|PluginConfig.GetPluginMetadata|Didn't find config file <{configPath}>");
Log.Error(nameof(PluginConfig),$"Didn't find config file <{configPath}>");
return null;
}

Expand All @@ -70,19 +70,19 @@ private static PluginMetadata GetPluginMetadata(string pluginDirectory)
}
catch (Exception e)
{
Log.Exception($"|PluginConfig.GetPluginMetadata|invalid json for config <{configPath}>", e);
Log.Exception(nameof(PluginConfig),$"invalid json for config <{configPath}>", e);
return null;
}

if (!AllowedLanguage.IsAllowed(metadata.Language))
{
Log.Error($"|PluginConfig.GetPluginMetadata|Invalid language <{metadata.Language}> for config <{configPath}>");
Log.Error(nameof(PluginConfig),$"Invalid language <{metadata.Language}> for config <{configPath}>");
return null;
}

if (!File.Exists(metadata.ExecuteFilePath))
{
Log.Error($"|PluginConfig.GetPluginMetadata|execute file path didn't exist <{metadata.ExecuteFilePath}> for conifg <{configPath}");
Log.Error(nameof(PluginConfig),$"execute file path didn't exist <{metadata.ExecuteFilePath}> for conifg <{configPath}");
return null;
}

Expand Down
35 changes: 16 additions & 19 deletions Flow.Launcher.Core/Plugin/PluginManager.cs
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,7 @@ public static class PluginManager

public static List<PluginPair> AllPlugins { get; private set; }
public static readonly HashSet<PluginPair> GlobalPlugins = new();
public static readonly Dictionary<string, PluginPair> NonGlobalPlugins = new ();
public static readonly Dictionary<string, PluginPair> NonGlobalPlugins = new();

public static IPublicAPI API { private set; get; }

Expand All @@ -33,7 +33,7 @@ public static class PluginManager
/// <summary>
/// Directories that will hold Flow Launcher plugin directory
/// </summary>
private static readonly string[] Directories = { Constant.PreinstalledDirectory, DataLocation.PluginsDirectory };
private static readonly string[] Directories = {Constant.PreinstalledDirectory, DataLocation.PluginsDirectory};

private static void DeletePythonBinding()
{
Expand Down Expand Up @@ -99,12 +99,13 @@ public static async Task InitializePlugins(IPublicAPI api)
{
try
{
var milliseconds = await Stopwatch.DebugAsync($"|PluginManager.InitializePlugins|Init method time cost for <{pair.Metadata.Name}>",
() => pair.Plugin.InitAsync(new PluginInitContext(pair.Metadata, API)));
var milliseconds = await Stopwatch.DebugAsync(nameof(PluginManager),
$"Init method time cost for <{pair.Metadata.Name}>",
() => pair.Plugin.InitAsync(new PluginInitContext(pair.Metadata, API)));

pair.Metadata.InitTime += milliseconds;
Log.Info(
$"|PluginManager.InitializePlugins|Total init cost for <{pair.Metadata.Name}> is <{pair.Metadata.InitTime}ms>");
Log.Info(nameof(PluginManager),
$"Total init cost for <{pair.Metadata.Name}> is <{pair.Metadata.InitTime}ms>");
}
catch (Exception e)
{
Expand Down Expand Up @@ -149,15 +150,16 @@ public static ICollection<PluginPair> ValidPluginsForQuery(Query query)
if (NonGlobalPlugins.ContainsKey(query.ActionKeyword))
{
var plugin = NonGlobalPlugins[query.ActionKeyword];
return new List<PluginPair> { plugin };
return new List<PluginPair> {plugin};
}
else
{
return GlobalPlugins;
}
}

public static async Task<List<Result>> QueryForPlugin(PluginPair pair, Query query, CancellationToken token)
public static async Task<List<Result>> QueryForPluginAsync(PluginPair pair, Query query,
CancellationToken token)
{
var results = new List<Result>();
try
Expand All @@ -166,12 +168,12 @@ public static async Task<List<Result>> QueryForPlugin(PluginPair pair, Query que

long milliseconds = -1L;

milliseconds = await Stopwatch.DebugAsync($"|PluginManager.QueryForPlugin|Cost for {metadata.Name}",
milliseconds = await Stopwatch.DebugAsync(nameof(PluginManager), $"Cost for {metadata.Name}",
async () => results = await pair.Plugin.QueryAsync(query, token).ConfigureAwait(false));

token.ThrowIfCancellationRequested();
if (results == null)
return results;
return null;
UpdatePluginMetadata(results, metadata, query);

metadata.QueryCount += 1;
Expand All @@ -184,10 +186,6 @@ public static async Task<List<Result>> QueryForPlugin(PluginPair pair, Query que
// null will be fine since the results will only be added into queue if the token hasn't been cancelled
return null;
}
catch (Exception e)
{
Log.Exception($"|PluginManager.QueryForPlugin|Exception for plugin <{pair.Metadata.Name}> when query <{query}>", e);
}

return results;
}
Expand Down Expand Up @@ -228,7 +226,7 @@ public static List<Result> GetContextMenusForPlugin(Result result)
var pluginPair = _contextMenuPlugins.FirstOrDefault(o => o.Metadata.ID == result.PluginID);
if (pluginPair != null)
{
var plugin = (IContextMenu)pluginPair.Plugin;
var plugin = (IContextMenu) pluginPair.Plugin;

try
{
Expand All @@ -242,9 +240,8 @@ public static List<Result> GetContextMenusForPlugin(Result result)
}
catch (Exception e)
{
Log.Exception(
$"|PluginManager.GetContextMenusForPlugin|Can't load context menus for plugin <{pluginPair.Metadata.Name}>",
e);
Log.Exception(nameof(PluginManager),
$"Can't load context menus for plugin <{pluginPair.Metadata.Name}>", e);
}
}

Expand Down Expand Up @@ -309,4 +306,4 @@ public static void ReplaceActionKeyword(string id, string oldActionKeyword, stri
}
}
}
}
}
12 changes: 6 additions & 6 deletions Flow.Launcher.Core/Plugin/PluginsLoader.cs
Original file line number Diff line number Diff line change
Expand Up @@ -38,8 +38,8 @@ public static IEnumerable<PluginPair> DotNetPlugins(List<PluginMetadata> source)

foreach (var metadata in metadatas)
{
var milliseconds = Stopwatch.Debug(
$"|PluginsLoader.DotNetPlugins|Constructor init cost for {metadata.Name}", () =>
var milliseconds = Stopwatch.Debug(nameof(PluginsLoader),
$"Constructor init cost for {metadata.Name}", () =>
{
#if DEBUG
var assemblyLoader = new PluginAssemblyLoader(metadata.ExecuteFilePath);
Expand All @@ -64,19 +64,19 @@ public static IEnumerable<PluginPair> DotNetPlugins(List<PluginMetadata> source)
}
catch (Exception e) when (assembly == null)
{
Log.Exception($"|PluginsLoader.DotNetPlugins|Couldn't load assembly for the plugin: {metadata.Name}", e);
Log.Exception(nameof(PluginsLoader), $"Couldn't load assembly for the plugin: {metadata.Name}", e);
}
catch (InvalidOperationException e)
{
Log.Exception($"|PluginsLoader.DotNetPlugins|Can't find the required IPlugin interface for the plugin: <{metadata.Name}>", e);
Log.Exception(nameof(PluginsLoader), $"Can't find the required IPlugin interface for the plugin: <{metadata.Name}>", e);
}
catch (ReflectionTypeLoadException e)
{
Log.Exception($"|PluginsLoader.DotNetPlugins|The GetTypes method was unable to load assembly types for the plugin: <{metadata.Name}>", e);
Log.Exception(nameof(PluginsLoader), $"The GetTypes method was unable to load assembly types for the plugin: <{metadata.Name}>", e);
}
catch (Exception e)
{
Log.Exception($"|PluginsLoader.DotNetPlugins|The following plugin has errored and can not be loaded: <{metadata.Name}>", e);
Log.Exception(nameof(PluginsLoader), $"The following plugin has errored and can not be loaded: <{metadata.Name}>", e);
}
#endif
if (plugin == null)
Expand Down
22 changes: 13 additions & 9 deletions Flow.Launcher.Core/Resource/Internationalization.cs
Original file line number Diff line number Diff line change
Expand Up @@ -51,7 +51,8 @@ private void AddPluginLanguageDirectories()
}
else
{
Log.Error($"|Internationalization.AddPluginLanguageDirectories|Can't find plugin path <{location}> for <{plugin.Metadata.Name}>");
Log.Error("Internationalization",
$"Can't find plugin path <{location}> for <{plugin.Metadata.Name}>");
}
}
}
Expand All @@ -72,10 +73,11 @@ public void ChangeLanguage(string languageCode)
private Language GetLanguageByLanguageCode(string languageCode)
{
var lowercase = languageCode.ToLower();
var language = AvailableLanguages.GetAvailableLanguages().FirstOrDefault(o => o.LanguageCode.ToLower() == lowercase);
var language = AvailableLanguages.GetAvailableLanguages()
.FirstOrDefault(o => o.LanguageCode.ToLower() == lowercase);
if (language == null)
{
Log.Error($"|Internationalization.GetLanguageByLanguageCode|Language code can't be found <{languageCode}>");
Log.Error("Internationalization", $"Language code can't be found <{languageCode}>");
return AvailableLanguages.English;
}
else
Expand All @@ -94,9 +96,9 @@ public void ChangeLanguage(Language language)
{
LoadLanguage(language);
}

UpdatePluginMetadataTranslations();
Settings.Language = language.LanguageCode;

}

public bool PromptShouldUsePinyin(string languageCodeToSet)
Expand All @@ -109,7 +111,8 @@ public bool PromptShouldUsePinyin(string languageCodeToSet)
if (languageToSet != AvailableLanguages.Chinese && languageToSet != AvailableLanguages.Chinese_TW)
return false;

if (MessageBox.Show("Do you want to turn on search with Pinyin?", string.Empty, MessageBoxButton.YesNo) == MessageBoxResult.No)
if (MessageBox.Show("Do you want to turn on search with Pinyin?", string.Empty, MessageBoxButton.YesNo) ==
MessageBoxResult.No)
return false;

return true;
Expand Down Expand Up @@ -161,7 +164,7 @@ public string GetTranslation(string key)
}
else
{
Log.Error($"|Internationalization.GetTranslation|No Translation for key {key}");
Log.Error("Internationalization", $"No Translation for key {key}");
return $"No Translation for key {key}";
}
}
Expand All @@ -179,7 +182,7 @@ private void UpdatePluginMetadataTranslations()
}
catch (Exception e)
{
Log.Exception($"|Internationalization.UpdatePluginMetadataTranslations|Failed for <{p.Metadata.Name}>", e);
Log.Exception(nameof(Internationalization), $"Failed for <{p.Metadata.Name}>", e);
}
}
}
Expand All @@ -195,15 +198,16 @@ public string LanguageFile(string folder, string language)
}
else
{
Log.Error($"|Internationalization.LanguageFile|Language path can't be found <{path}>");
Log.Error(nameof(Internationalization), $"Language path can't be found <{path}>");
string english = Path.Combine(folder, DefaultFile);
if (File.Exists(english))
{
return english;
}
else
{
Log.Error($"|Internationalization.LanguageFile|Default English Language path can't be found <{path}>");
Log.Error(nameof(Internationalization),
$"Default English Language path can't be found <{path}>");
return string.Empty;
}
}
Expand Down
6 changes: 3 additions & 3 deletions Flow.Launcher.Core/Resource/Theme.cs
Original file line number Diff line number Diff line change
Expand Up @@ -63,7 +63,7 @@ private void MakesureThemeDirectoriesExist()
}
catch (Exception e)
{
Log.Exception($"|Theme.MakesureThemeDirectoriesExist|Exception when create directory <{dir}>", e);
Log.Exception(nameof(Theme),$"Exception when create directory <{dir}>", e);
}
}
}
Expand Down Expand Up @@ -93,7 +93,7 @@ public bool ChangeTheme(string theme)
}
catch (DirectoryNotFoundException e)
{
Log.Error($"|Theme.ChangeTheme|Theme <{theme}> path can't be found");
Log.Error(nameof(Theme),$"Theme <{theme}> path can't be found");
if (theme != defaultTheme)
{
MessageBox.Show(string.Format(InternationalizationManager.Instance.GetTranslation("theme_load_failure_path_not_exists"), theme));
Expand All @@ -103,7 +103,7 @@ public bool ChangeTheme(string theme)
}
catch (XamlParseException e)
{
Log.Error($"|Theme.ChangeTheme|Theme <{theme}> fail to parse");
Log.Error(nameof(Theme),$"Theme <{theme}> fail to parse");
if (theme != defaultTheme)
{
MessageBox.Show(string.Format(InternationalizationManager.Instance.GetTranslation("theme_load_failure_parse_error"), theme));
Expand Down
Loading