Set up comprehensive logging and monitoring for Obsidian plugins. Use when implementing debug logging, tracking plugin performance, or setting up error reporting for your Obsidian plugin. Trigger with phrases like "obsidian logging", "obsidian monitoring", "obsidian debug", "track obsidian plugin".
From obsidian-packnpx claudepluginhub nickloveinvesting/nick-love-plugins --plugin obsidian-packThis skill is limited to using the following tools:
references/implementation.mdSearches, retrieves, and installs Agent Skills from prompts.chat registry using MCP tools like search_skills and get_skill. Activates for finding skills, browsing catalogs, or extending Claude.
Searches prompts.chat for AI prompt templates by keyword or category, retrieves by ID with variable handling, and improves prompts via AI. Use for discovering or enhancing prompts.
Guides implementation of event-driven hooks in Claude Code plugins using prompt-based validation and bash commands for PreToolUse, Stop, and session events.
Implement comprehensive logging, metrics collection, error tracking, and a debug panel for Obsidian plugins.
| Metric | Type | Purpose |
|---|---|---|
| Command execution time | Timer | Performance tracking |
| File operations count | Counter | Usage patterns |
| Error rate | Counter | Reliability |
| Cache hit ratio | Gauge | Efficiency |
| Memory usage | Gauge | Resource health |
Create a Logger class with levels (debug/info/warn/error), history buffer, formatted output, and timing helpers.
Build MetricsCollector with counters, gauges, and timers. Add timeAsync() wrapper for measuring function duration with percentile stats (p95).
Create ErrorTracker that deduplicates errors by name+message, counts occurrences, and provides wrapAsync() for safe error capture.
Register a sidebar view (dev mode only) that auto-refreshes every 5 seconds showing counters, timer stats, recent errors, and log history. Add export button for downloadable JSON debug bundle.
Initialize logger, metrics, and error tracker in onload(). Wrap commands with metrics timing. Track command usage with counters.
See detailed implementation for complete Logger, MetricsCollector, ErrorTracker, DebugView classes and CSS styles.
| Issue | Cause | Solution |
|---|---|---|
| Too much logging | Debug level in prod | Set level to 'error' in production |
| Memory growth | Unbounded history | Limit history to 100 entries |
| Performance impact | Sync logging | Use async patterns for file logging |
| Missing context | No error tracking | Wrap async calls with errorTracker |
const endTimer = logger.time('my-operation');
await doExpensiveWork();
endTimer(); // Logs: [plugin-id] my-operation (245.32ms)
For incident response, see obsidian-incident-runbook.