# Diagnostics Resilience # Diagnostics & Resilience Fapilog is designed to contain errors and surface diagnostics without crashing applications. ## Internal diagnostics - Enable with `FAPILOG_CORE__INTERNAL_LOGGING_ENABLED=true`. - Emits WARN/DEBUG lines for worker errors, sink errors, backpressure drops, and serialization issues. - Output goes to **stderr** by default (Unix convention), keeping diagnostics separate from application logs on stdout. - Use `core.diagnostics_output="stdout"` for backward compatibility with older log pipelines. ## Error containment - Enrichment, redaction, and sink errors are caught; offending entries may be dropped but do not raise into the app. - Backpressure drops are counted and optionally logged. - Error deduplication: identical ERROR/CRITICAL messages within a window (`core.error_dedupe_window_seconds`) are suppressed to reduce noise, with a summary emitted when the window rolls. ## Shutdown behavior - `stop_and_drain()` signals the dedicated worker thread to stop and joins it with a timeout (`core.shutdown_timeout_seconds`) to avoid hangs. ## Resilience tips - Keep `drop_on_full=True` for burst protection in latency-sensitive paths; monitor drops via metrics. - Use redaction guardrails (`redaction_max_depth`, `redaction_max_keys_scanned`) to avoid pathological data structures. - Enable internal diagnostics temporarily during investigations; keep it off in steady state if noisy.