# mx-logging
Tracing and logging utilities for MultiversX services.
## Features
- Structured logging with tracing
- Compact console output format
- Environment-based configuration via `RUST_LOG`
- Optional OpenTelemetry integration (feature: `opentelemetry`)
## Usage
```rust
use mx_logging::init;
// Initialize with default filter
init(None, "info");
tracing::info!(tx_count = 100, "Processing batch");
```
### With explicit filter
```rust
use mx_logging::init;
// Explicit filter takes precedence over RUST_LOG
init(Some("mx_relayer=debug,mx_notifier=info"), "info");
```
### With OpenTelemetry (requires `opentelemetry` feature)
```rust,ignore
use mx_logging::{OtelConfig, init_with_otel};
let config = OtelConfig {
service_name: "mx-relayer".to_string(),
otlp_endpoint: "http://localhost:4317".to_string(),
..Default::default()
};
init_with_otel(&config, None, "info").expect("Failed to initialize tracing");
```
## Configuration
Set `RUST_LOG` environment variable:
```bash
RUST_LOG=mx_relayer=debug,mx_notifier=info cargo run
```
Filter priority:
1. `RUST_LOG` environment variable (if set)
2. Explicit `filter` argument (if provided)
3. `default_filter` argument