gemini_adk_rs/telemetry/
logging.rs

1//! Structured logging helpers for agent lifecycle.
2//!
3//! All log events carry consistent fields for correlation.
4
5/// Log that an agent has started.
6pub fn log_agent_started(agent_name: &str, tool_count: usize) {
7    tracing::info!(
8        agent_name = agent_name,
9        tool_count = tool_count,
10        "Agent started"
11    );
12}
13
14/// Log that an agent has completed.
15pub fn log_agent_completed(agent_name: &str, duration_ms: f64) {
16    tracing::info!(
17        agent_name = agent_name,
18        duration_ms = duration_ms,
19        "Agent completed"
20    );
21}
22
23/// Log a tool dispatch.
24pub fn log_tool_dispatch(agent_name: &str, tool_name: &str, tool_class: &str) {
25    tracing::info!(
26        agent_name = agent_name,
27        tool_name = tool_name,
28        tool_class = tool_class,
29        "Tool dispatched"
30    );
31}
32
33/// Log a tool result.
34pub fn log_tool_result(agent_name: &str, tool_name: &str, success: bool, duration_ms: f64) {
35    tracing::info!(
36        agent_name = agent_name,
37        tool_name = tool_name,
38        success = success,
39        duration_ms = duration_ms,
40        "Tool result"
41    );
42}
43
44/// Log an agent transfer.
45pub fn log_agent_transfer(from: &str, to: &str) {
46    tracing::info!(from = from, to = to, "Agent transfer");
47}
48
49/// Log an agent error (warn level).
50pub fn log_agent_error(agent_name: &str, error: &str) {
51    tracing::warn!(agent_name = agent_name, error = error, "Agent error");
52}
53
54/// Log an agent-as-tool dispatch.
55pub fn log_agent_tool_dispatch(parent: &str, child: &str) {
56    tracing::info!(parent = parent, child = child, "Agent tool dispatch");
57}
58
59/// Log event loop lag (warn level).
60pub fn log_event_loop_lag(agent_name: &str, skipped: u64) {
61    tracing::warn!(
62        agent_name = agent_name,
63        skipped = skipped,
64        "Event loop lag — skipped events"
65    );
66}
67
68/// Log an LLM call.
69pub fn log_llm_call(
70    model_id: &str,
71    agent_name: &str,
72    prompt_tokens: u32,
73    completion_tokens: u32,
74    duration_ms: f64,
75) {
76    tracing::info!(
77        model_id = model_id,
78        agent_name = agent_name,
79        prompt_tokens = prompt_tokens,
80        completion_tokens = completion_tokens,
81        duration_ms = duration_ms,
82        "LLM call completed"
83    );
84}
85
86/// Log a phase transition.
87pub fn log_phase_transition(from: &str, to: &str) {
88    tracing::info!(from = from, to = to, "Phase transition");
89}
90
91/// Log an extraction result.
92pub fn log_extraction_result(extractor: &str, success: bool, duration_ms: f64) {
93    tracing::info!(
94        extractor = extractor,
95        success = success,
96        duration_ms = duration_ms,
97        "Extraction completed"
98    );
99}
100
101/// Log session persistence.
102pub fn log_session_persisted(session_id: &str, backend: &str, duration_ms: f64) {
103    tracing::info!(
104        session_id = session_id,
105        backend = backend,
106        duration_ms = duration_ms,
107        "Session persisted"
108    );
109}