Skip to content

panic_handler

Structured panic logging for downstream observability systems

This module provides structured panic logging that integrates with observability infrastructure like Grafana, focusing purely on capturing panic information in structured format for monitoring and analysis.

  • 🔥 Structured Panic Logging: Detailed panic information in structured JSON format
  • 📊 Panic Analytics: Basic statistics for monitoring patterns
  • 🔗 Context Preservation: Maintains trace context for correlation
  • 🎯 WASM Compatibility: Works in WebAssembly environments
  • 🏥 Downstream Integration: Designed for Grafana and monitoring stacks

Configuration for panic logging

Fields

FieldTypeDescription
enable_structured_loggingboolEnable structured panic logging
enable_analyticsboolEnable panic analytics and pattern detection
enable_context_preservationboolEnable context preservation across panics

Structured panic information for downstream systems

Fields

FieldTypeDescription
messageStringPanic message
locationOption<String>Panic location (file:line:column)
thread_infoThreadInfoThread name and ID
timestampStringTimestamp when panic occurred (ISO 8601)
severityPanicSeverityPanic severity classification
trace_contextOption<domain::TraceContext>Preserved trace context
enhanced_contextOption<EnhancedTraceContext>Enhanced correlation context
metadataHashMap<String, serde_json::Value>Additional metadata

Thread information for panic context

Fields

FieldTypeDescription
nameOption<String>
idString
is_mainbool

Panic statistics for monitoring

Fields

FieldTypeDescription
total_panicsu64Total panics encountered
panics_by_severityHashMap<String, u64>Panics by severity
panics_by_threadHashMap<String, u64>Panics by thread
common_patternsVec<PanicPattern>Most common panic patterns
last_panic_timestampOption<String>Last panic timestamp

Panic pattern for analytics

Fields

FieldTypeDescription
patternString
countu64
first_seenString
last_seenString

Structured panic logger for downstream systems

Methods

fn new(config: PanicHandlerConfig) -> Result<Self>

Create a new panic handler

fn install(config: PanicHandlerConfig) -> Result<()>

Install the panic handler globally

fn get_stats(&self) -> Result<PanicStats>

Get current panic statistics

fn reset_stats(&self) -> Result<()>

Reset panic statistics

Panic severity levels for classification

Variants

VariantDescription
LowLow severity panic
MediumMedium severity panic
HighHigh severity panic
CriticalCritical severity panic
fn install_panic_handler() -> Result<()>

Install panic handler with default configuration

fn install_panic_handler_with_config(config: PanicHandlerConfig) -> Result<()>

Install panic handler with custom configuration

fn get_panic_stats() -> Result<PanicStats>

Get panic statistics if handler is installed

fn reset_panic_stats() -> Result<()>

Reset panic statistics if handler is installed