Skip to content

Commit

Permalink
Make log button pick the newest log file
Browse files Browse the repository at this point in the history
  • Loading branch information
ManlyMarco committed Sep 1, 2021
1 parent 9f14817 commit e7117c9
Showing 1 changed file with 17 additions and 15 deletions.
32 changes: 17 additions & 15 deletions ConfigurationManager/Utilities/Utilities.cs
Original file line number Diff line number Diff line change
Expand Up @@ -96,7 +96,7 @@ public static void OpenLog()
{
bool TryOpen(string path)
{
if (!File.Exists(path)) return false;
if (path == null) return false;
try
{
Process.Start(path);
Expand All @@ -108,37 +108,39 @@ bool TryOpen(string path)
}
}

var candidates = new List<string>();

// Redirected by preloader to game root
if (TryOpen(Path.Combine(Path.Combine(Application.dataPath, ".."), "output_log.txt"))) return;
var rootDir = Path.Combine(Application.dataPath, "..");
candidates.Add(Path.Combine(rootDir, "output_log.txt"));

// Generated in most versions unless disabled
if (TryOpen(Path.Combine(Application.dataPath, "output_log.txt"))) return;
candidates.Add(Path.Combine(Application.dataPath, "output_log.txt"));

// Available since 2018.3
var prop = typeof(Application).GetProperty("consoleLogPath", BindingFlags.Static | BindingFlags.Public);
if (prop != null)
{
var path = prop.GetValue(null, null) as string;
if (TryOpen(path)) return;
candidates.Add(path);
}

if (Directory.Exists(Application.persistentDataPath))
{
var file = Directory.GetFiles(Application.persistentDataPath, "output_log.txt", SearchOption.AllDirectories).FirstOrDefault();
if (TryOpen(file)) return;
candidates.Add(file);
}

// Fall back to more aggresive brute search
var rootDir = Directory.GetParent(Application.dataPath);
if (rootDir.Exists)
{
// BepInEx 5.x log file
var result = rootDir.GetFiles("LogOutput.log", SearchOption.AllDirectories).FirstOrDefault();
if (result == null)
result = rootDir.GetFiles("output_log.txt", SearchOption.AllDirectories).FirstOrDefault();
var latestLog = candidates.Where(File.Exists).OrderByDescending(File.GetLastWriteTimeUtc).FirstOrDefault();
if (TryOpen(latestLog)) return;

if (result != null && TryOpen(result.FullName)) return;
}
candidates.Clear();
// Fall back to more aggresive brute search
// BepInEx 5.x log file, can be "LogOutput.log.1" or higher if multiple game instances run
candidates.AddRange(Directory.GetFiles(rootDir,"LogOutput.log*", SearchOption.AllDirectories));
candidates.AddRange(Directory.GetFiles(rootDir,"output_log.txt", SearchOption.AllDirectories));
latestLog = candidates.Where(File.Exists).OrderByDescending(File.GetLastWriteTimeUtc).FirstOrDefault();
if (TryOpen(latestLog)) return;

throw new FileNotFoundException("No log files were found");
}
Expand Down

0 comments on commit e7117c9

Please sign in to comment.
  翻译: