# imgui-log A logger that routes logs to an imgui window. Supports both standalone mode (hook into your ui yourself), and an amethyst-imgui system (automatically rendered every frame). ![preview](https://i.imgur.com/55GicMT.png) # Setup Add this to your `Cargo.toml` ```toml [dependencies] imgui-log = "0.1.0" ``` # Basic Example ```rust // Start the logger let log = imgui_log::init(); // Create your UI let ui: imgui::Ui = ... ; // Render loop loop { // Output some info info!("Hello World"); // Draw to a window let window = imgui::Window::new(im_str!("My Log")); log.draw(&ui, window); } ``` # Configuring A default config is provided, but you are free to customize the format string, coloring, etc if desired. ```rust imgui_log::init_with_config(LoggerConfig::default() .stdout(false) .colors(LogColors { trace: [1., 1., 1., 1.], debug: [1., 1., 1., 1.], info: [1., 1., 1., 1.], warn: [1., 1., 1., 1.], error: [1., 1., 1., 1.], }) ); ``` # Amethyst usage Enable the `amethyst-system` feature. ```toml [dependencies] imgui-log = { version = "0.1.0", features = ["amethyst-system"] } ``` Replace `imgui::init` with `imgui_log::create_system` and add it to your app's `.with()` statements Add the `RenderImgui` plugin if it is not already being used. (This is re-exported from the `amethyst-imgui` crate for your convenience) ```rust use imgui_log::amethyst_imgui::RenderImgui; /// .... let app_root = application_root_dir()?; let display_config_path = app_root.join("examples/display.ron"); let game_data = GameDataBuilder::default() .with_barrier() .with(imgui_log::create_system(), "imgui_log", &[]) // <--- ADDED LINE .with_bundle(InputBundle::::default())? .with_bundle( RenderingBundle::::new() .with_plugin( RenderToWindow::from_config_path(display_config_path) .with_clear([0.34, 0.36, 0.52, 1.0]), ) .with_plugin(RenderImgui::::default()), // <--- ADDED LINE )?; Application::build("/", Example)?.build(game_data)?.run(); ```