Expand description
Logger middleware for request/response logging.
This module provides a built-in logging middleware that automatically logs
incoming WebSocket messages, responses, and processing times. It integrates
with the tracing crate for structured logging.
§Overview
The LoggerMiddleware records:
- Incoming message type and connection ID
- Processing duration
- Response status (sent/none/error)
- Detailed error information
§Log Levels
The logger supports three log levels:
LogLevel::Debug- Most verbose, for developmentLogLevel::Info- Standard logging, for productionLogLevel::Warn- Only warnings and errors
§Examples
§Basic Usage
use wsforge::prelude::*;
async fn echo(msg: Message) -> Result<Message> {
Ok(msg)
}
let router = Router::new()
.layer(LoggerMiddleware::new())
.default_handler(handler(echo));
router.listen("127.0.0.1:8080").await?;§With Custom Log Level
use wsforge::prelude::*;
// Debug level - very verbose
let debug_logger = LoggerMiddleware::with_level(LogLevel::Debug);
// Info level - standard
let info_logger = LoggerMiddleware::with_level(LogLevel::Info);
// Warn level - only warnings/errors
let warn_logger = LoggerMiddleware::with_level(LogLevel::Warn);§In Production
use wsforge::prelude::*;
use tracing_subscriber;
#[tokio::main]
async fn main() -> Result<()> {
// Initialize tracing subscriber
tracing_subscriber::fmt()
.with_max_level(tracing::Level::INFO)
.init();
let router = Router::new()
.layer(LoggerMiddleware::new())
.default_handler(handler(my_handler));
router.listen("0.0.0.0:8080").await?;
Ok(())
}§Log Output Examples
§Successful Request
2025-10-16T10:30:45.123Z INFO Received message, conn_id="conn_42", msg_type=Text
2025-10-16T10:30:45.125Z INFO Sent response in 2ms, conn_id="conn_42"§Error Case
2025-10-16T10:30:46.123Z INFO Received message, conn_id="conn_43", msg_type=Text
2025-10-16T10:30:46.124Z ERROR Error in 1ms, conn_id="conn_43", error="Invalid JSON"§No Response
2025-10-16T10:30:47.123Z INFO Received message, conn_id="conn_44", msg_type=Binary
2025-10-16T10:30:47.124Z INFO Processed in 1ms, conn_id="conn_44"Structs§
- Logger
Middleware - Built-in logger middleware for logging WebSocket messages.
Enums§
- LogLevel
- Log level for the logger middleware.