| Crates.io | tracing-web-console |
| lib.rs | tracing-web-console |
| version | 0.2.0 |
| created_at | 2025-11-29 18:24:48.270708+00 |
| updated_at | 2025-12-23 18:24:43.889407+00 |
| description | A real-time web-based console for viewing and filtering tracing logs |
| homepage | |
| repository | https://github.com/firstdorsal/tracing-web-console |
| max_upload_size | |
| id | 1957185 |
| size | 1,174,340 |
A real-time web-based console for Rust applications using the tracing ecosystem. Drop in a single line of code to get a beautiful, interactive dashboard for monitoring your application's logs.
Note: Currently only Axum is supported as the web framework.
[!WARNING] Development Use Only - This tool is intended for local development and debugging purposes. It is not suitable for production environments because:
- No authentication - The dashboard is publicly accessible to anyone who can reach the endpoint
- Potential secret exposure - Log messages may contain sensitive data (API keys, tokens, passwords, PII)
- Performance impact - Storing and streaming logs adds overhead to your application
If you need production logging, consider using proper observability tools like OpenTelemetry or similar services with appropriate security controls.

DEBUG for your app, WARN for dependencies)
Add to your Cargo.toml:
[dependencies]
tracing-web-console = "0.1"
use axum::Router;
use axum::routing::get;
use tracing_web_console::TracingLayer;
#[tokio::main]
async fn main() {
// Create your app router
let app = Router::new()
.route("/", get(|| async { "Hello World" }))
// Add the tracing dashboard at /tracing
.merge(TracingLayer::new("/tracing").into_router());
// Start the server
let listener = tokio::net::TcpListener::bind("0.0.0.0:3000")
.await
.unwrap();
println!("Dashboard available at http://localhost:3000/tracing");
axum::serve(listener, app).await.unwrap();
}
That's it! Navigate to http://localhost:3000/tracing to view your logs.
Mount the dashboard at any path:
TracingLayer::new("/admin/logs") // Dashboard at /admin/logs
TracingLayer::new("/debug") // Dashboard at /debug
Configure how many log events to keep in memory:
// Store up to 50,000 events (default: 10,000)
TracingLayer::with_capacity("/tracing", 50_000)



The following HTTP endpoints are available under your configured base path:
| Endpoint | Method | Description |
|---|---|---|
/ |
GET | Serves the web dashboard |
/api/logs |
POST | Query logs with filters and pagination |
/api/targets |
GET | List all unique log targets |
/api/ws |
GET | WebSocket endpoint for real-time logs |
curl -X POST http://localhost:3000/tracing/api/logs \
-H "Content-Type: application/json" \
-d '{
"limit": 100,
"offset": 0,
"global_level": "debug",
"target_levels": {"my_app": "trace"},
"search": "error",
"sort_order": "newest_first"
}'
# Build the entire project (includes frontend)
cargo build
# Run the example server
cargo run -p example-server
cd tracing-web-console/frontend
pnpm install
pnpm dev # Start dev server with hot reload
tracing_subscriber::Layer to capture all log eventsThis project is licensed under the GNU Affero General Public License v3.0 (AGPL-3.0). See LICENSE for details.
Contributions are welcome! Please feel free to submit a Pull Request.