private void Log_Message(LogVerbosity verbosity, Log.Category category, string message) { DateTime date = DateTime.Now; lock (logBuffer) logBuffer.Add(new LogMessage(date, category, verbosity, message)); }
public LogMessage(DateTime date, Log.Category category, LogVerbosity verbosity, string message) { Date = date; Category = category; Verbosity = verbosity; Message = message; }
void OnEnable( ) { // instantiate a new instance of log proxy for use by viewer logProxy = new LogProxy( ); logProxy.Init(); // setup initial filter parms and their previous values if (levelColours == null) { category = (Log.Category) 0xFFFFFF; prevCategory = category; level = Log.Level.Trivial; prevLevel = level; logLevel = 0; pauseFrame = null; keyword = ""; Log.SetListener(OnLogChange); scrollPosition = 0f; activeMessage = null; stylesInitialized = false; logSize = Log.Instance.Count; isDirty = true; levelColours = new Dictionary <Log.Level, StateColour>( ); LoadSettings( ); } // assign application hook to register callbacks for console output and log them if needed Application.RegisterLogCallback(HandleLog); }
public int FilterLogs(Log.Category categories, Log.Level level, string keyword, int lockedAt = -1) { // ensure we never have a null parameter if (keyword == null) { keyword = string.Empty; } // using the lockedAt parameter, determine if we want all or a partial set of messages int safeLockedAt; if (lockedAt < 1) { safeLockedAt = messages.Count; } else { safeLockedAt = Mathf.Clamp(lockedAt, lockedAt, messages.Count); } // fetch the list for a given range current = messages.GetRange(0, safeLockedAt).FindAll(( LogMessage message ) => ( categories & message.category) > 0 && message.level >= level && message.message.ToLower( ).Contains(keyword.ToLower( )) ); current.Reverse( ); return(current.Count); }
public LogMessage(float time, int frame, Log.Category category, Log.Level level, string message, string stack) { this.time = time; this.frame = frame; this.category = category; this.level = level; this.message = (message == null) ? "" : message; this.stack = (stack == null) ? "" : stack; this.occurances = 1; }
private void RenderHeader( ) { // build the title bar with all filtering options GUILayout.BeginHorizontal(titleBarStyle, GUILayout.Height(32f)); // render out the available category buttons and prefix with all/none GUILayout.Label("Category:", GUILayout.Width(68f)); category = (Log.Category)EditorGUILayout.EnumMaskField(category); GUILayout.Space(8f); // display a level slider we can adjust the log level with GUILayout.Label("Log Level:", GUILayout.Width(68f)); logLevel = GUILayout.HorizontalSlider(logLevel, 0f, 4f, GUILayout.Width(128f)); logLevel = Mathf.Clamp(Mathf.RoundToInt(logLevel), 0, 4); level = (Log.Level)Mathf.RoundToInt(logLevel); string label = level.ToString( ); GUILayout.Label("(" + label + ")"); GUILayout.FlexibleSpace( ); // render out the text search filter area GUILayout.Label("Keyword:"); keyword = GUILayout.TextField(keyword == null ? "" : keyword, GUILayout.Width(128f)); GUILayout.Space(4f); if (GUILayout.Button("Actions", EditorStyles.toolbarDropDown)) { GenericMenu toolsMenu = new GenericMenu( ); toolsMenu.AddItem(new GUIContent("Copy Active Log"), false, CopyActiveLog); string pauseMenuText = pauseFrame == null ? "Pause Log Viewer" : "Resume Log Viewer"; toolsMenu.AddItem(new GUIContent(pauseMenuText), false, PauseLog); toolsMenu.AddSeparator(""); toolsMenu.AddItem(new GUIContent("Redirect To Console"), Log.Instance.IsConsoleOn( ), RedirectToConsole); toolsMenu.AddItem(new GUIContent("Intercept Console"), Log.Instance.IsInterceptOn( ), InterceptConsole); toolsMenu.AddSeparator(""); string toggleWatches = (logWatch == null) ? "Show Watches" : "Hide Watches"; toolsMenu.AddItem(new GUIContent(toggleWatches), false, ToggleWatchWindow); toolsMenu.AddItem(new GUIContent("Export to 'log.csv'"), false, ExportToCSV); toolsMenu.AddSeparator(""); toolsMenu.AddItem(new GUIContent("Clear Log"), false, ClearLog); toolsMenu.DropDown(new Rect(position.width - 200f, 16f, 0, 16)); } GUILayout.Space(2f); GUILayout.EndHorizontal( ); }
public int FilterLogs(Log.Category categories, Log.Level level, string keyword) { return(FilterLogs(categories, level, keyword, -1)); }