Module logger

Module logger 

Source
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:

§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§

LoggerMiddleware
Built-in logger middleware for logging WebSocket messages.

Enums§

LogLevel
Log level for the logger middleware.