diff --git a/ArchiSteamFarm/Logging.cs b/ArchiSteamFarm/Logging.cs index f28857c6e..0177503ba 100644 --- a/ArchiSteamFarm/Logging.cs +++ b/ArchiSteamFarm/Logging.cs @@ -62,6 +62,12 @@ namespace ArchiSteamFarm { internal static void LogGenericException(string botName, Exception exception, [CallerMemberName] string previousMethodName = "") { Log("[!] EXCEPTION: " + previousMethodName + "() <" + botName + "> " + exception.Message); + Log("[!] StackTrace: " + exception.StackTrace); + + Exception innerException = exception.InnerException; + if (innerException != null) { + LogGenericException(botName, innerException, previousMethodName); + } } internal static void LogGenericWarning(string botName, string message, [CallerMemberName] string previousMethodName = "") { diff --git a/ArchiSteamFarm/Program.cs b/ArchiSteamFarm/Program.cs index 01ac37b4a..a2331ea75 100644 --- a/ArchiSteamFarm/Program.cs +++ b/ArchiSteamFarm/Program.cs @@ -204,7 +204,17 @@ namespace ArchiSteamFarm { } } + private static void UnhandledExceptionHandler(object sender, UnhandledExceptionEventArgs args) { + if (sender == null || args == null) { + return; + } + + Logging.LogGenericException("Main", (Exception) args.ExceptionObject); + } + private static void Main(string[] args) { + AppDomain.CurrentDomain.UnhandledException += new UnhandledExceptionEventHandler(UnhandledExceptionHandler); + Logging.LogGenericInfo("Main", "Archi's Steam Farm, version " + Version); Directory.SetCurrentDirectory(ExecutableDirectory); InitServices();