finds.dev← search

// the find

jongpie/NebulaLogger

★ 934 · Apex · MIT · updated Jun 2026

The most robust observability solution for Salesforce experts. Built 100% natively on the platform, and designed to work seamlessly with Apex, Lightning Components, Flow, OmniStudio, and integrations.

NebulaLogger is a structured logging framework for Salesforce orgs that stores log entries in custom SObjects instead of ephemeral debug logs. It supports every Salesforce execution context — Apex, LWC, Aura, Flow, and OmniStudio — through a unified API. Aimed at Salesforce developers and architects who need persistent, queryable observability without leaving the platform.

Platform-native with no external dependencies — logs survive as actual database records you can report on, build dashboards from, and query with SOQL. The event-driven architecture via platform events means logging doesn't block your transaction and survives rollbacks (except SYNCHRONOUS_DML mode). The CallableLogger Callable interface is genuinely clever for ISVs: optional dependency on Nebula Logger without hard-coupling your package. Test utilities (LoggerMockDataStore, LoggerTestConfigurator) exist specifically so you can write unit tests without deploying to a scratch org.

Storage costs scale with log volume — every log entry is a database record, and Salesforce data storage is expensive; high-volume orgs will hit governor limits or storage bills fast without aggressive retention/purge policies. The managed package loses the plugin framework entirely, which is one of the more useful architectural features — you're forced to choose between upgrade stability and extensibility. Parent transaction linking across async jobs requires manual plumbing (calling setParentLogTransactionId) — it's opt-in and easy to forget, so your batch job logs end up as orphaned trees. No built-in sampling or rate limiting: if a runaway trigger fires 50k times, you log 50k records.

View on GitHub → Homepage ↗

// want more like this?

We dig through GitHub every week and send a few repos picked for what you actually care about — each with an honest take like this one.

Get finds in your inbox → Search again →