public static void Error(string text, bool ignoreStopLoggingLimit = false) { if (!ignoreStopLoggingLimit && Log.ReachedMaxMessagesLimit) { return; } Debug.LogError(text); if (!Log.currentlyLoggingError) { Log.currentlyLoggingError = true; try { if (Prefs.PauseOnError && Current.ProgramState == ProgramState.Playing) { Find.TickManager.Pause(); } Log.messageQueue.Enqueue(new LogMessage(LogMessageType.Error, text, StackTraceUtility.ExtractStackTrace())); Log.PostMessage(); if (!PlayDataLoader.Loaded || Prefs.DevMode) { Log.TryOpenLogWindow(); } } catch (Exception arg) { Debug.LogError("An error occurred while logging an error: " + arg); } finally { Log.currentlyLoggingError = false; } } }
public static void Notify_Exception(Exception e) { Log.messageQueue.Enqueue(new LogMessage(LogMessageType.Error, e.Message, e.StackTrace)); if (!PlayDataLoader.Loaded || Prefs.DevMode) { Log.TryOpenLogWindow(); } }
private static void PostMessage() { if (Log.openOnMessage) { Log.TryOpenLogWindow(); EditWindow_Log.SelectLastMessage(true); } Log.messageCount++; if (Log.messageCount == 1000 && Log.ReachedMaxMessagesLimit) { Log.Warning("Reached max messages limit. Stopping logging to avoid spam.", true); } }
public static void Error(string text) { if (Prefs.PauseOnError && Current.ProgramState == ProgramState.Playing) { Find.TickManager.CurTimeSpeed = TimeSpeed.Paused; } Debug.LogError(text); Log.messageQueue.Enqueue(new LogMessage(LogMessageType.Error, text, StackTraceUtility.ExtractStackTrace())); if (!PlayDataLoader.Loaded || Prefs.DevMode) { Log.TryOpenLogWindow(); } }