Improve logging system

This commit is contained in:
Chax
2023-06-19 01:05:04 +02:00
parent 6b6fb66a7d
commit c06d606164
8 changed files with 80 additions and 39 deletions

6
ADB.cs
View File

@@ -78,7 +78,7 @@ namespace AndroidSideloader
_ = Logger.Log(output);
}
_ = Logger.Log(error, "ERROR");
_ = Logger.Log(error, LogLevel.ERROR);
return new ProcessOutput(output, error);
}
}
@@ -139,7 +139,7 @@ namespace AndroidSideloader
ADBDebugWarning();
}
_ = Logger.Log(output);
_ = Logger.Log(error, "ERROR");
_ = Logger.Log(error, LogLevel.ERROR);
return new ProcessOutput(output, error);
}
public static ProcessOutput RunCommandToString(string result, string path = "")
@@ -190,7 +190,7 @@ namespace AndroidSideloader
ADBDebugWarning();
}
_ = Logger.Log(output);
_ = Logger.Log(error, "ERROR");
_ = Logger.Log(error, LogLevel.ERROR);
return new ProcessOutput(output, error);
}

View File

@@ -650,7 +650,7 @@ namespace AndroidSideloader
{
Devices.Add(currLine.Split(' ')[0]);
_ = devicesComboBox.Items.Add(currLine.Split(' ')[0]);
_ = Logger.Log(currLine.Split(' ')[0] + "\n", "INFO", false);
_ = Logger.Log(currLine.Split(' ')[0] + "\n", LogLevel.INFO, false);
}
Debug.WriteLine(currLine);
i++;
@@ -809,7 +809,7 @@ namespace AndroidSideloader
}
catch (Exception ex)
{
_ = Logger.Log($"Unable to get available space with the exception: {ex}", "ERROR");
_ = Logger.Log($"Unable to get available space with the exception: {ex}", LogLevel.ERROR);
}
}
@@ -859,7 +859,7 @@ namespace AndroidSideloader
}
catch (Exception ex)
{
_ = Logger.Log($"Exception on backup: {ex}", "ERROR");
_ = Logger.Log($"Exception on backup: {ex}", LogLevel.ERROR);
}
})
{
@@ -1694,9 +1694,9 @@ namespace AndroidSideloader
catch (Exception ex)
{
Game.ForeColor = colorFont_error;
_ = Logger.Log($"An error occured while rendering game {release[SideloaderRCLONE.GameNameIndex]} in ListView", "ERROR");
_ = Logger.Log($"An error occured while rendering game {release[SideloaderRCLONE.GameNameIndex]} in ListView", LogLevel.ERROR);
_ = ADB.RunAdbCommandToString($"shell \"dumpsys package {packagename}\"");
_ = Logger.Log($"ExMsg: {ex.Message}Installed:\"{InstalledVersionCode}\" Cloud:\"{Utilities.StringUtilities.KeepOnlyNumbers(release[SideloaderRCLONE.VersionCodeIndex])}\"", "ERROR");
_ = Logger.Log($"ExMsg: {ex.Message}Installed:\"{InstalledVersionCode}\" Cloud:\"{Utilities.StringUtilities.KeepOnlyNumbers(release[SideloaderRCLONE.VersionCodeIndex])}\"", LogLevel.ERROR);
}
}
}
@@ -2841,13 +2841,13 @@ Things you can try:
catch (FormatException ex)
{
_ = FlexibleMessageBox.Show("The OBB Folder on the Quest seems to not exist or be empty\nPlease redownload the game or sideload the obb manually.", "OBB Size Undetectable!", MessageBoxButtons.OK);
Logger.Log($"Unable to compare obbs with the exception: {ex.Message}", "ERROR");
Logger.Log($"Unable to compare obbs with the exception: {ex.Message}", LogLevel.ERROR);
FlexibleMessageBox.Show($"Error comparing OBB sizes: {ex.Message}");
return false;
}
catch (Exception ex)
{
Logger.Log($"Unexpected error occurred while comparing OBBs: {ex.Message}", "ERROR");
Logger.Log($"Unexpected error occurred while comparing OBBs: {ex.Message}", LogLevel.ERROR);
FlexibleMessageBox.Show($"Unexpected error comparing OBB sizes: {ex.Message}");
return false;
}
@@ -3755,9 +3755,9 @@ Things you can try:
catch (Exception ex)
{
Game.ForeColor = colorFont_error;
_ = Logger.Log($"An error occured while rendering game {release[SideloaderRCLONE.GameNameIndex]} in ListView", "ERROR");
_ = Logger.Log($"An error occured while rendering game {release[SideloaderRCLONE.GameNameIndex]} in ListView", LogLevel.ERROR);
_ = ADB.RunAdbCommandToString($"shell \"dumpsys package {packagename}\"");
_ = Logger.Log($"ExMsg: {ex.Message}Installed:\"{InstalledVersionCode}\" Cloud:\"{Utilities.StringUtilities.KeepOnlyNumbers(release[SideloaderRCLONE.VersionCodeIndex])}\"", "ERROR");
_ = Logger.Log($"ExMsg: {ex.Message}Installed:\"{InstalledVersionCode}\" Cloud:\"{Utilities.StringUtilities.KeepOnlyNumbers(release[SideloaderRCLONE.VersionCodeIndex])}\"", LogLevel.ERROR);
}
}
}
@@ -4092,9 +4092,9 @@ Things you can try:
catch (Exception ex)
{
Game.ForeColor = colorFont_error;
_ = Logger.Log($"An error occured while rendering game {release[SideloaderRCLONE.GameNameIndex]} in ListView", "ERROR");
_ = Logger.Log($"An error occured while rendering game {release[SideloaderRCLONE.GameNameIndex]} in ListView", LogLevel.ERROR);
_ = ADB.RunAdbCommandToString($"shell \"dumpsys package {packagename}\"");
_ = Logger.Log($"ExMsg: {ex.Message}Installed:\"{InstalledVersionCode}\" Cloud:\"{Utilities.StringUtilities.KeepOnlyNumbers(release[SideloaderRCLONE.VersionCodeIndex])}\"", "ERROR");
_ = Logger.Log($"ExMsg: {ex.Message}Installed:\"{InstalledVersionCode}\" Cloud:\"{Utilities.StringUtilities.KeepOnlyNumbers(release[SideloaderRCLONE.VersionCodeIndex])}\"", LogLevel.ERROR);
}
}
}
@@ -4236,9 +4236,9 @@ Things you can try:
catch (Exception ex)
{
Game.ForeColor = colorFont_error;
_ = Logger.Log($"An error occured while rendering game {release[SideloaderRCLONE.GameNameIndex]} in ListView", "ERROR");
_ = Logger.Log($"An error occured while rendering game {release[SideloaderRCLONE.GameNameIndex]} in ListView", LogLevel.ERROR);
_ = ADB.RunAdbCommandToString($"shell \"dumpsys package {packagename}\"");
_ = Logger.Log($"ExMsg: {ex.Message}Installed:\"{InstalledVersionCode}\" Cloud:\"{Utilities.StringUtilities.KeepOnlyNumbers(release[SideloaderRCLONE.VersionCodeIndex])}\"", "ERROR");
_ = Logger.Log($"ExMsg: {ex.Message}Installed:\"{InstalledVersionCode}\" Cloud:\"{Utilities.StringUtilities.KeepOnlyNumbers(release[SideloaderRCLONE.VersionCodeIndex])}\"", LogLevel.ERROR);
}
}
}

View File

@@ -33,7 +33,7 @@ namespace AndroidSideloader
}
catch (Exception ex)
{
_ = Logger.Log("Exception occured while attempting to shut down RCLONE", "ERROR");
_ = Logger.Log("Exception occured while attempting to shut down RCLONE", LogLevel.ERROR);
}
}
}
@@ -151,7 +151,7 @@ namespace AndroidSideloader
{
if (!string.IsNullOrWhiteSpace(error))
{
_ = Logger.Log($"Rclone error: {error}\n", "ERROR");
_ = Logger.Log($"Rclone error: {error}\n", LogLevel.ERROR);
}
if (!string.IsNullOrWhiteSpace(output))
@@ -215,7 +215,7 @@ namespace AndroidSideloader
//if there is one of these errors, we switch the mirrors
if (error.Contains("400 Bad Request") || error.Contains("cannot fetch token") || error.Contains("authError") || error.Contains("quota") || error.Contains("exceeded") || error.Contains("directory not found") || error.Contains("Failed to"))
{
_ = Logger.Log(error, "ERROR");
_ = Logger.Log(error, LogLevel.ERROR);
return new ProcessOutput("Upload Failed.", "Upload failed.");
}
else
@@ -228,7 +228,7 @@ namespace AndroidSideloader
{
if (!string.IsNullOrWhiteSpace(error))
{
_ = Logger.Log($"Rclone error: {error}\n", "ERROR");
_ = Logger.Log($"Rclone error: {error}\n", LogLevel.ERROR);
}
if (!string.IsNullOrWhiteSpace(output))
@@ -300,7 +300,7 @@ namespace AndroidSideloader
}
if (error.Contains("Only one usage of each socket address (protocol/network address/port) is normally permitted")) {
_ = Logger.Log(error, "ERROR");
_ = Logger.Log(error, LogLevel.ERROR);
return new ProcessOutput("Failed to fetch from public mirror.", "Failed to fetch from public mirror.\nYou may have a running RCLONE Task!\nCheck your Task Manager, Sort by Network Usage, and kill the process Rsync for Cloud Storage/Rclone");
}
@@ -312,7 +312,7 @@ namespace AndroidSideloader
|| error.Contains("directory not found")
|| error.Contains("Failed to"))
{
_ = Logger.Log(error, "ERROR");
_ = Logger.Log(error, LogLevel.ERROR);
return new ProcessOutput("Failed to fetch from public mirror.", "Failed to fetch from public mirror.");
}
else
@@ -325,7 +325,7 @@ namespace AndroidSideloader
{
if (!string.IsNullOrWhiteSpace(error))
{
_ = Logger.Log($"Rclone error: {error}\n", "ERROR");
_ = Logger.Log($"Rclone error: {error}\n", LogLevel.ERROR);
}
if (!string.IsNullOrWhiteSpace(output))

View File

@@ -106,7 +106,7 @@ namespace AndroidSideloader
RecursiveSideload(d);
}
}
catch (Exception ex) { _ = Logger.Log(ex.Message, "ERROR"); }
catch (Exception ex) { _ = Logger.Log(ex.Message, LogLevel.ERROR); }
}
//Recursive copy any obb folder
@@ -124,7 +124,7 @@ namespace AndroidSideloader
RecursiveCopyOBB(d);
}
}
catch (Exception ex) { _ = Logger.Log(ex.Message, "ERROR"); }
catch (Exception ex) { _ = Logger.Log(ex.Message, LogLevel.ERROR); }
}
//uninstalls an app
@@ -340,7 +340,7 @@ namespace AndroidSideloader
{
if (version != "1.62.2")
{
Logger.Log("RCLONE Version not matching! Downloading required version.", "WARNING");
Logger.Log("RCLONE Version not matching! Downloading required version.", LogLevel.WARNING);
File.Delete(pathToRclone);
currentAccessedWebsite = "rclone";
string architecture = Environment.Is64BitOperatingSystem ? "amd64" : "386";

View File

@@ -264,7 +264,7 @@ namespace AndroidSideloader
}
catch (Exception e)
{
_ = Logger.Log($"Failed to update Upload config: {e.Message}", "ERROR");
_ = Logger.Log($"Failed to update Upload config: {e.Message}", LogLevel.ERROR);
}
}
@@ -293,7 +293,7 @@ namespace AndroidSideloader
}
catch (Exception e)
{
_ = Logger.Log($"Failed to update Public config: {e.Message}", "ERROR");
_ = Logger.Log($"Failed to update Public config: {e.Message}", LogLevel.ERROR);
}
}

View File

@@ -93,7 +93,7 @@ namespace AndroidSideloader.Utilities
string error = cmd.StandardError.ReadToEnd();
string output = cmd.StandardOutput.ReadToEnd();
_ = Logger.Log($"Output: {output}");
_ = Logger.Log($"Error: {error}", "ERROR");
_ = Logger.Log($"Error: {error}", LogLevel.ERROR);
return new ProcessOutput(output, error);
}

View File

@@ -1,23 +1,40 @@
using System;
using System.IO;
using System.Text;
namespace AndroidSideloader
{
internal class Logger
public enum LogLevel
{
public string logfile = Properties.Settings.Default.CurrentLogPath;
public static bool Log(string text, string logLevel = "NOTICE", bool ret = true)
DEBUG,
INFO,
WARNING,
ERROR,
TRACE,
FATAL
}
public static class Logger
{
private static readonly object lockObject = new object();
private static string logFilePath = Properties.Settings.Default.CurrentLogPath;
private static bool enableContextualLogging = true;
public static bool Log(string text, LogLevel logLevel = LogLevel.INFO, bool ret = true)
{
if (text.Length <= 5)
if (string.IsNullOrWhiteSpace(text) || text.Length <= 5)
return ret;
string time = DateTime.UtcNow.ToString("hh:mmtt(UTC): ");
string time = DateTime.UtcNow.ToString("hh:mm:ss.fff tt (UTC): ");
string newline = text.Length > 40 && text.Contains("\n") ? "\n\n" : "\n";
string logEntry = time + "[" + logLevel.ToUpper() + "] " + text + newline;
string logEntry = time + "[" + logLevel.ToString().ToUpper() + "] [" + GetCallerInfo() + "] " + text + newline;
try
{
File.AppendAllText(Properties.Settings.Default.CurrentLogPath, logEntry);
lock (lockObject)
{
File.AppendAllText(logFilePath, logEntry);
}
}
catch
{
@@ -26,5 +43,31 @@ namespace AndroidSideloader
return ret;
}
public static void SetLogFilePath(string path)
{
logFilePath = path;
}
public static void EnableContextualLogging(bool enable)
{
enableContextualLogging = enable;
}
private static string GetCallerInfo()
{
System.Diagnostics.StackTrace stackTrace = new System.Diagnostics.StackTrace(true);
if (stackTrace.FrameCount >= 3)
{
var frame = stackTrace.GetFrame(2);
var method = frame.GetMethod();
string className = method.DeclaringType?.Name;
string methodName = method.Name;
string callerInfo = $"{className}.{methodName}";
return callerInfo;
}
return string.Empty;
}
}
}

View File

@@ -60,11 +60,9 @@ namespace AndroidSideloader.Utilities
MessageBoxIcon.Error);
}
_ = Logger.Log(x.StandardOutput.ReadToEnd());
_ = Logger.Log(error, "ERROR");
_ = Logger.Log(error, LogLevel.ERROR);
throw new ApplicationException($"Extracting failed, status code {x.ExitCode}");
}
}
}
}