| Crates.io | platform_common |
| lib.rs | platform_common |
| version | 0.4.8 |
| created_at | 2025-11-28 11:46:57.546058+00 |
| updated_at | 2026-01-11 21:48:42.490269+00 |
| description | Common utilities and middleware for microservices: trace-id, structured logging, HTTP propagation, RabbitMQ with auto-reconnect |
| homepage | https://gitlab.com/sim2381847/libs/rust/platform_common |
| repository | https://gitlab.com/sim2381847/libs/rust/platform_common |
| max_upload_size | |
| id | 1955191 |
| size | 231,681 |
Общие утилиты и middleware для микросервисов SIM Platform.
[dependencies]
platform_common = { git = "https://gitlab.com/sim2381847/platform_common.git", features = ["full"] }
tracing-setup - Настройка JSON логирования (включено по умолчанию)middleware - Axum middleware для trace-id (включено по умолчанию)trace-propagation - Propagation trace-id в HTTP клиентахfull - Все фичи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);
}
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));
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)
}
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(())
}
LOG_FORMAT - Формат логирования: json (default) или prettyRUST_LOG - Уровень логирования (default: info)См. examples/ директорию для полных примеров использования.
MIT