|
@@ -0,0 +1,47 @@
|
|
|
+using System.Diagnostics;
|
|
|
+using System.Linq;
|
|
|
+using BepInEx.Logging;
|
|
|
+
|
|
|
+namespace BepInEx.Preloader.Core.Logging
|
|
|
+{
|
|
|
+ public static class ChainloaderLogHelper
|
|
|
+ {
|
|
|
+ public static void PrintLogInfo(ManualLogSource log)
|
|
|
+ {
|
|
|
+ string consoleTile = $"BepInEx {typeof(Paths).Assembly.GetName().Version} - {Process.GetCurrentProcess().ProcessName}";
|
|
|
+ log.LogMessage(consoleTile);
|
|
|
+
|
|
|
+ if (ConsoleManager.ConsoleActive)
|
|
|
+ ConsoleManager.SetConsoleTitle(consoleTile);
|
|
|
+
|
|
|
+ //See BuildInfoAttribute for more information about this section.
|
|
|
+ object[] attributes = typeof(BuildInfoAttribute).Assembly.GetCustomAttributes(typeof(BuildInfoAttribute), false);
|
|
|
+
|
|
|
+ if (attributes.Length > 0)
|
|
|
+ {
|
|
|
+ var attribute = (BuildInfoAttribute)attributes[0];
|
|
|
+ log.LogMessage(attribute.Info);
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ public static void RewritePreloaderLogs()
|
|
|
+ {
|
|
|
+ if (PreloaderConsoleListener.LogEvents == null || PreloaderConsoleListener.LogEvents.Count == 0)
|
|
|
+ return;
|
|
|
+
|
|
|
+ // Temporarily disable the console log listener as we replay the preloader logs
|
|
|
+ var logListener = Logger.Listeners.FirstOrDefault(logger => logger is ConsoleLogListener);
|
|
|
+
|
|
|
+ if (logListener != null)
|
|
|
+ Logger.Listeners.Remove(logListener);
|
|
|
+
|
|
|
+ foreach (var preloaderLogEvent in PreloaderConsoleListener.LogEvents)
|
|
|
+ {
|
|
|
+ PreloaderLogger.Log.Log(preloaderLogEvent.Level, $"[{ preloaderLogEvent.Source.SourceName,10}] { preloaderLogEvent.Data}");
|
|
|
+ }
|
|
|
+
|
|
|
+ if (logListener != null)
|
|
|
+ Logger.Listeners.Add(logListener);
|
|
|
+ }
|
|
|
+ }
|
|
|
+}
|