#![cfg_attr(docsrs, feature(doc_cfg))]
#![allow(clippy::missing_errors_doc, clippy::missing_panics_doc)]
mod config;
mod error;
mod init;
pub mod attributes;
#[cfg(feature = "tower")]
#[cfg_attr(docsrs, doc(cfg(feature = "tower")))]
pub mod tower;
#[cfg(feature = "prometheus")]
#[cfg_attr(docsrs, doc(cfg(feature = "prometheus")))]
pub mod metrics;
pub use config::{TelemetryConfig, TelemetryConfigBuilder};
pub use error::{TelemetryError, TelemetryResult};
pub use init::TelemetryGuard;
pub use tracing::{Instrument, instrument};
pub use tracing::{debug, error, info, trace, warn};
pub use tracing::{debug_span, error_span, info_span, trace_span, warn_span};
pub mod span_attributes {
pub const MCP_METHOD: &str = "mcp.method";
pub const MCP_TOOL_NAME: &str = "mcp.tool.name";
pub const MCP_RESOURCE_URI: &str = "mcp.resource.uri";
pub const MCP_PROMPT_NAME: &str = "mcp.prompt.name";
pub const MCP_REQUEST_ID: &str = "mcp.request.id";
pub const MCP_SESSION_ID: &str = "mcp.session.id";
pub const MCP_CLIENT_NAME: &str = "mcp.client.name";
pub const MCP_CLIENT_VERSION: &str = "mcp.client.version";
pub const MCP_SERVER_NAME: &str = "mcp.server.name";
pub const MCP_SERVER_VERSION: &str = "mcp.server.version";
pub const MCP_TRANSPORT: &str = "mcp.transport";
pub const MCP_PROTOCOL_VERSION: &str = "mcp.protocol.version";
pub const MCP_TENANT_ID: &str = "mcp.tenant.id";
pub const MCP_USER_ID: &str = "mcp.user.id";
pub const MCP_DURATION_MS: &str = "mcp.duration_ms";
pub const MCP_STATUS: &str = "mcp.status";
pub const MCP_ERROR_CODE: &str = "mcp.error.code";
pub const MCP_ERROR_MESSAGE: &str = "mcp.error.message";
}
pub mod prelude {
pub use super::config::{TelemetryConfig, TelemetryConfigBuilder};
pub use super::error::{TelemetryError, TelemetryResult};
pub use super::init::TelemetryGuard;
pub use super::span_attributes;
pub use tracing::{Instrument, debug, error, info, instrument, trace, warn};
#[cfg(feature = "tower")]
pub use super::tower::{TelemetryLayer, TelemetryLayerConfig};
}
#[cfg(test)]
mod tests {
use super::*;
#[test]
fn test_span_attributes_defined() {
assert_eq!(span_attributes::MCP_METHOD, "mcp.method");
assert_eq!(span_attributes::MCP_TOOL_NAME, "mcp.tool.name");
assert_eq!(span_attributes::MCP_RESOURCE_URI, "mcp.resource.uri");
assert_eq!(span_attributes::MCP_SESSION_ID, "mcp.session.id");
assert_eq!(span_attributes::MCP_TRANSPORT, "mcp.transport");
}
}