25 releases
| 0.4.96 | Feb 20, 2026 |
|---|---|
| 0.4.95 | Feb 19, 2026 |
| 0.4.92 | Jan 28, 2026 |
| 0.4.7 | Dec 15, 2025 |
| 0.1.4 | Nov 29, 2025 |
#301 in Debugging
145KB
2.5K
SLoC
Platform Common
Общие утилиты и middleware для микросервисов SIM Platform.
Возможности
- 📊 Structured Logging - JSON логирование для Loki с trace-id
- 🔍 Distributed Tracing - Автоматическая propagation trace-id между сервисами
- 🎯 Axum Middleware - Готовые middleware для trace-id
- 🚀 Zero Config - Работает из коробки с разумными defaults
Установка
[dependencies]
platform_common = { git = "https://gitlab.com/sim2381847/platform_common.git", features = ["full"] }
Features
tracing-setup- Настройка JSON логирования (включено по умолчанию)middleware- Axum middleware для trace-id (включено по умолчанию)trace-propagation- Propagation trace-id в HTTP клиентахfull- Все фичи
Использование
1. Настройка логирования
use platform_common::tracing_setup::init_tracing;
fn main() {
// JSON формат для production (Loki)
init_tracing("my-service", Some("json"));
// Pretty формат для локальной разработки
init_tracing("my-service", Some("pretty
// Автоопределение из env var LOG_FORMAT
init_tracing("my-service", None);
}
2. Добавление trace-id middleware
use axum::{Router, routing::get, middleware as axum_middleware};
use platform_common::middleware::trace_id_middleware;
let app = Router::new()
.route("/", get(handler))
.layer(axum_middleware::from_fn(trace_id_middleware));
3. Использование trace-id в handlers
use axum::Json;
use platform_common::middleware::TraceId;
async fn my_handler(trace_id: TraceId) -> Json<Response> {
tracing::info!(trace_id = %trace_id.as_str(), "Processing request");
// Вызов другого сервиса с propagation trace-id
call_other_service(&trace_id).await?;
Json(response)
}
4. Propagation trace-id в HTTP запросах
use platform_common::trace_propagation::TracePropagation;
use platform_common::middleware::TraceId;
async fn call_other_service(trace_id: &TraceId) -> Result<(), Error> {
let client = reqwest::Client::new();
let response = client
.get("http://other-service/api/endpoint")
.with_trace_id(trace_id) // ← Добавляет X-Trace-Id header
.send()
.await?;
Ok(())
}
Environment Variables
LOG_FORMAT- Формат логирования:json(default) илиprettyRUST_LOG- Уровень логирования (default:info)
Примеры
См. examples/ директорию для полных примеров использования.
License
MIT
Dependencies
~0.3–22MB
~245K SLoC