Tree-based message logging and toggleable trace printing (#728)

* Log message tree

* Log when message execution deferred

* Tree structure in traces

* Fix ordering when queue partially consumed

* Change some log settings and wording

* Revert default max log level to debug

* Change messages to On/Names/Contents as log::info, change trace to toggle, rename GlobalMessage to DebugMessage

* DebugPrintDocument cleanup

Co-authored-by: Keavon Chambers <keavon@keavon.com>
This commit is contained in:
0HyperCube
2022-07-23 01:33:21 +01:00
committed by Keavon Chambers
parent a0c22d20b6
commit db82cf69a4
15 changed files with 191 additions and 102 deletions

View File

@@ -0,0 +1,20 @@
use crate::message_prelude::*;
use serde::{Deserialize, Serialize};
#[impl_message(Message, Debug)]
#[derive(PartialEq, Eq, Clone, Debug, Hash, Serialize, Deserialize)]
pub enum DebugMessage {
ToggleTraceLogs,
MessageOff,
MessageNames,
MessageContents,
}
#[derive(Debug, Default, Clone, Copy)]
pub enum LoggingMessages {
#[default]
Off,
Names,
Contents,
}

View File

@@ -0,0 +1,52 @@
use crate::debug::debug_message::LoggingMessages;
use crate::message_prelude::*;
use std::collections::VecDeque;
#[derive(Debug, Default)]
pub struct DebugMessageHandler {
pub logging_messages_mode: LoggingMessages,
}
impl MessageHandler<DebugMessage, ()> for DebugMessageHandler {
#[remain::check]
fn process_action(&mut self, message: DebugMessage, _data: (), responses: &mut VecDeque<Message>) {
match message {
DebugMessage::ToggleTraceLogs => {
if let log::LevelFilter::Debug = log::max_level() {
log::set_max_level(log::LevelFilter::Trace);
} else {
log::set_max_level(log::LevelFilter::Debug);
}
// Refresh the checkmark beside the menu entry for this
responses.push_back(MenuBarMessage::SendLayout.into());
}
DebugMessage::MessageOff => {
self.logging_messages_mode = LoggingMessages::Off;
// Refresh the checkmark beside the menu entry for this
responses.push_back(MenuBarMessage::SendLayout.into());
}
DebugMessage::MessageNames => {
self.logging_messages_mode = LoggingMessages::Names;
// Refresh the checkmark beside the menu entry for this
responses.push_back(MenuBarMessage::SendLayout.into());
}
DebugMessage::MessageContents => {
self.logging_messages_mode = LoggingMessages::Contents;
// Refresh the checkmark beside the menu entry for this
responses.push_back(MenuBarMessage::SendLayout.into());
}
}
}
advertise_actions!(DebugMessageDiscriminant;
ToggleTraceLogs,
MessageOff,
MessageNames,
MessageContents,
);
}

8
editor/src/debug/mod.rs Normal file
View File

@@ -0,0 +1,8 @@
pub mod debug_message;
mod debug_message_handler;
#[doc(inline)]
pub use debug_message::{DebugMessage, DebugMessageDiscriminant};
#[doc(inline)]
pub use debug_message_handler::DebugMessageHandler;