# mermaid-trace **Repository Path**: xt765/mermaid-trace ## Basic Information - **Project Name**: mermaid-trace - **Description**: 别再干读日志了。开始“看”懂它们吧。 MermaidTrace 是一个专业的日志工具,能从你的代码执行中自动生成 Mermaid JS 时序图。它非常适合可视化复杂的业务逻辑、微服务交互或异步流程。 - **Primary Language**: Python - **License**: MIT - **Default Branch**: main - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 4 - **Forks**: 1 - **Created**: 2026-01-24 - **Last Updated**: 2026-03-17 ## Categories & Tags **Categories**: logging **Tags**: None ## README

MermaidTrace: Visualize Your Python Code Logic

MermaidTrace Logo

Stop drowning in cryptic logs. One line of code to transform complex execution logic into clear Mermaid sequence diagrams.

🌐 Language: English | 中文

CSDN Blog GitHub Gitee

PyPI version PyPI Downloads Python Versions License CI Status Ruff Mypy

## 🏗️ Architecture ```mermaid flowchart TB %% Style Definitions classDef userLayer fill:#e3f2fd,stroke:#1565c0,stroke-width:2px,color:#0d47a1,rx:5,ry:5 classDef coreLayer fill:#fff3e0,stroke:#e65100,stroke-width:2px,color:#bf360c,rx:5,ry:5 classDef ioLayer fill:#e8f5e9,stroke:#2e7d32,stroke-width:2px,color:#1b5e20,rx:5,ry:5 classDef vizLayer fill:#f3e5f5,stroke:#7b1fa2,stroke-width:2px,color:#4a148c,rx:5,ry:5 classDef storage fill:#eceff1,stroke:#455a64,stroke-width:2px,color:#263238,shape:cyl subgraph User["👤 User Integration"] direction TB Decorator["@trace / @trace_class"]:::userLayer Middleware["FastAPI Middleware"]:::userLayer Callback["LangChain Callback"]:::userLayer end subgraph Core["⚙️ Core Engine"] direction TB Context["ContextVars
(Trace Context)"]:::coreLayer EventBus["Event Bus
(LogContext)"]:::coreLayer Masker["Data Masking
(Sanitizer)"]:::coreLayer end subgraph IO["⚡ Async I/O Layer"] direction TB Queue["Async Queue
(Non-blocking)"]:::ioLayer Writer["File Handler
(Rotating/Timed)"]:::ioLayer end Storage[(".mmd File")]:::storage subgraph Viz["🌐 Visualization"] direction TB Watcher["Watchdog
(File Monitor)"]:::vizLayer Server["FastAPI Server
(SSE Support)"]:::vizLayer Browser["Web Browser
(Mermaid.js + PanZoom)"]:::vizLayer end %% Data Flow Decorator --> Context Middleware --> Context Callback --> Context Context --> EventBus EventBus --> Masker Masker --> Queue Queue --> Writer Writer --> Storage Storage -.-> Watcher Watcher --> Server Server == "SSE Push" ==> Browser %% Link Styles linkStyle default stroke:#607d8b,stroke-width:2px ``` --- ## ⚡️ Understand MermaidTrace in 5 Seconds #### 1. Original Code (15+ lines) ```python @trace(source="User", target="OrderSys") def create_order(user_id, items): # Complex business logic if not check_inventory(items): return "Out of Stock" # Nested logic calls price = calculate_price(items) discount = get_discount(user_id) final = price - discount # External service interactions res = pay_service.process(final) if res.success: update_stock(items) send_notif(user_id) return "Success" return "Failed" ``` #### 2. Auto-Generated Sequence Diagram ```mermaid sequenceDiagram autonumber User->>OrderSys: create_order(user_id, items) activate OrderSys OrderSys->>Inventory: check_inventory(items) Inventory-->>OrderSys: True OrderSys->>Pricing: calculate_price(items) Pricing-->>OrderSys: 100.0 OrderSys->>UserDB: get_discount(user_id) UserDB-->>OrderSys: 5.0 OrderSys->>PayService: process(95.0) activate PayService PayService-->>OrderSys: success deactivate PayService OrderSys->>Inventory: update_stock(items) OrderSys->>Notification: send_notif(user_id) OrderSys-->>User: "Success" deactivate OrderSys ``` --- ## 🚀 Dynamic Demo & Online Tryout ### 🎬 Quick Demo ![MermaidTrace Master Preview](docs/images/master_preview.png) *(Master Preview: Multi-file browsing, live-reload, and interactive pan/zoom)* ```mermaid sequenceDiagram participant CLI as mermaid-trace CLI participant App as Python App participant Web as Live Preview Note over CLI, Web: Enable Live Preview Mode CLI->>Web: Start HTTP Server (localhost:8000) App->>App: Run Logic (with @trace decorator) App->>App: Auto-update flow.mmd Web->>Web: File Change Detected (Hot Reload) Web-->>CLI: Render Latest Diagram ``` *(From adding decorators to browser live preview in 10 seconds)* ### 🛠️ Try Online (Google Colab) No local setup required. Experience core features in your browser: [![Open In Colab](https://img.shields.io/badge/Colab-Open%20in%20Colab-blue?style=flat&logo=google-colab&logoColor=white)](https://colab.research.google.com/github/xt765/mermaid-trace/blob/main/examples/MermaidTrace_Demo.ipynb) --- ## 🎯 Why MermaidTrace? (Use Cases) ### 1. Master "Legacy" Codebases **Pain**: Taking over a complex, undocumented legacy project with tangled function calls. **Solution**: Add `@trace_class` or `@trace` to entry points and run the code once. **Value**: Instantly generate a complete execution path map to understand the architecture. ### 2. Automated Technical Docs **Pain**: Manual sequence diagrams are time-consuming and quickly become outdated. **Solution**: Integrate MermaidTrace during development. **Value**: Diagrams stay 100% in sync with your code logic automatically. ### 3. Debug Complex Recursion & Concurrency **Pain**: Nested calls or async tasks produce interleaved logs that are impossible to read. **Solution**: Use built-in async support and intelligent collapsing. **Value**: Visualize recursion depth and concurrency flow to pinpoint logic bottlenecks. --- ## 🚀 Quick Start in 3 Steps ### 1. Install ```bash pip install mermaid-trace ``` ### 2. Add Decorators ```python from mermaid_trace import trace, configure_flow # Configure output file configure_flow("my_flow.mmd") @trace(source="User", target="AuthService") def login(username): return verify_db(username) @trace(source="AuthService", target="DB") def verify_db(username): return True login("admin") ``` ### 3. View Diagram Run the built-in CLI tool to preview in real-time (with hot-reload): ```bash # Preview a single file (Auto-reload, Pan/Zoom supported) mermaid-trace serve my_flow.mmd # Preview a directory (File browser, Multi-file switching) mermaid-trace serve . ``` ### 🔗 LangChain Integration Visualize LLM chains, agents, and RAG retrieval with a single handler: ```python from mermaid_trace.integrations.langchain import MermaidTraceCallbackHandler handler = MermaidTraceCallbackHandler(host_name="MyAIApp") # Pass to any LangChain object chain.invoke({"input": "..."}, config={"callbacks": [handler]}) ``` --- ## ✨ Key Features - **Decorator-Driven**: Simply add `@trace` or `@trace_interaction` to functions. - **Auto-Instrumentation**: Use `@trace_class` to trace a whole class at once. - **Data Privacy**: Automatic **Data Masking** for sensitive fields (passwords, tokens). - **Performance Control**: Configurable **Sampling Rate** for high-throughput systems. - **Distributed Tracing**: Support for **W3C Trace Context**, **B3**, and custom headers to link microservices. - **Third-Party Patching**: Use `patch_object` to trace calls inside external libraries. - **Async Support**: Seamlessly works with `asyncio` coroutines and concurrency. - **Enhanced Web UI**: Interactive preview server with file browsing, auto-reload, and pan/zoom support. - **Intelligent Collapsing**: Automatically collapses repetitive calls and identifies loops. - **FastAPI Integration**: Middleware for zero-config HTTP request tracing with header propagation. - **LangChain Integration**: Callback Handler for LLM chains and agent visualization. - **Detailed Exceptions**: Captures full stack traces for errors, displayed in the diagram. --- ## 📚 Documentation ### Core Documentation [User Guide](docs/en/USER_GUIDE.md) · [API Reference](docs/en/API.md) · [Contributing Guidelines](docs/en/CONTRIBUTING.md) · [Changelog](docs/en/CHANGELOG.md) · [License](LICENSE) ### Code Comment Documents | Category | Links | | :--- | :--- | | **Core Modules** | [Context](docs/en/code_comments/src/mermaid_trace/core/context.md) · [Decorators](docs/en/code_comments/src/mermaid_trace/core/decorators.md) · [Events](docs/en/code_comments/src/mermaid_trace/core/events.md) · [Formatter](docs/en/code_comments/src/mermaid_trace/core/formatter.md) | | **Handlers** | [Async Handler](docs/en/code_comments/src/mermaid_trace/handlers/async_handler.md) · [Mermaid Handler](docs/en/code_comments/src/mermaid_trace/handlers/mermaid_handler.md) | | **Integrations** | [FastAPI](docs/en/code_comments/src/mermaid_trace/integrations/fastapi.md) | | **Others** | [init](docs/en/code_comments/src/mermaid_trace/__init__.md) · [CLI](docs/en/code_comments/src/mermaid_trace/cli.md) | --- ## 🤝 Contributing We welcome contributions! Please see [CONTRIBUTING.md](docs/en/CONTRIBUTING.md) for details. --- ## 📄 License MIT