Rust Tracing Practices

SkillMonitoring & ops

HASH tracing and instrumentation practices for Rust. Use when adding spans, events, or #[tracing::instrument] to Rust code.

Available today. Use it from your connected AI after setup.

Connect ahel once, and every AI you use reads what you have installed.

Then ask your AI: use the Rust Tracing Practices skill

What this skill tells your AI

The instructions your AI receives, as published by hashintel/hash in .agents/skills/rust-tracing-practices/SKILL.md and read by ahel’s review.

Event Recording

  • Use level-specific macros for appropriate visibility: info!, debug!, trace!, warn!, error!
  • Provide structured data as named arguments to facilitate automated processing and filtering
  • Format log messages consistently, beginning with verbs in present tense
  • Include relevant context through key-value pairs:
tracing::info!(user_id = user.id, action = "login", "User logged in successfully");
tracing::error!(error = %e, user_id = user.id, "Failed to authenticate user");

Instrumentation

  • Apply the #[tracing::instrument] attribute to functions to automatically create trace spans
  • Include the err parameter to capture error returns in the span
  • Exclude sensitive or large parameters using skip(password) or skip_all
  • Add custom context fields with fields(request_id = req.id())
#[tracing::instrument(level = "debug", err, skip(password), fields(user_id = user.id))]
async fn authenticate_user(user: &User, password: &[u8]) -> Result<AuthToken, AuthError> {
    // Implementation
}

Signals

GitHub stars
2k
Forks
122
Last commit
Sep 2026
Advanced
Catalog kind
skill
Gateway key
rust-tracing-practices
Source
github.com/hashintel/hash