Nebula Logger for Salesforce
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.
Unlocked Package - v4.19.5
sf package install --wait 20 --security-type AdminsOnly --package 04tg7000000IzRdAAK
Managed Package - v4.19.0
sf package install --wait 30 --security-type AdminsOnly --package 04tg7000000GZbJAAW
AI Agent Skills
Nebula Logger includes Agent Skills that help AI coding agents (Claude Code, GitHub Copilot, Cursor, and others) install, configure, and use Nebula Logger with the recommended patterns.
npx skills add jongpie/NebulaLogger
Features
A unified logging tool that supports easily adding log entries across the Salesforce platform, using:
- Apex: classes, triggers, and anonymous Apex scripts
- Lightning Components: lightning web components (LWCs) & aura components
- Flow & Process Builder: any Flow type that supports invocable actions
- OmniStudio: omniscripts and omni integration procedures
Built with an event-driven pub/sub messaging architecture, using
LogEntryEvent__eplatform events. For more details on leveraging platform events, see the Platform Events Developer Guide siteActionable observability data about your Salesforce org, available directly in your Salesforce org via the 5 included custom objects
Log__cLogEntry__cLogEntryTag__cLoggerTag__cLoggerScenario__c
Customizable logging settings for different users & profiles, using the included
LoggerSettings__ccustom hierarchy settings objectEasily scales in highly complex Salesforce orgs with large data volumes, using global feature flags in
LoggerParameter__mdtAutomatic data masking of sensitive data, using rules configured in the
LogEntryDataMaskRule__mdtcustom metadata type objectView related
LogEntry__crecords on any Lightning record page in App Builder by adding the 'Related Log Entries' component (relatedLogEntriesLWC)Dynamically assign tags to
Log__candLogEntry__crecords for tagging/labeling your logsExtendable with a built-in plugin framework: easily build or install plugins that enhance Nebula Logger, using Apex or Flow (not currently available in the managed package)
ISVs & package developers have several options for leveraging Nebula Logger in your own packages
- Optional Dependency: dynamically leverage Nebula Logger in your own packages - when it's available in a subscriber's org - using Apex's
Callableinterface and Nebula Logger's included implementationCallableLogger(requiresv4.14.10of Nebula Logger or newer) - Hard Dependency: add either Nebula Logger's unlocked (no namespace) package or its managed package (
Nebulanamespace) as a dependency for your package to ensure customers always have a version of Nebula Logger installed - No Dependency: Bundle Nebula Logger's metadata into your own project - all of Nebula Logger's metadata is fully open source & freely available. This approach provides with full control of what's included in your own app/project.
- Optional Dependency: dynamically leverage Nebula Logger in your own packages - when it's available in a subscriber's org - using Apex's
Learn more about the design and history of the project on Joys Of Apex blog post
Architecture Overview
Nebula Logger is built natively on Salesforce, using Apex, lightning components and various types of objects. There are no required external dependencies. To learn more about the architecture, check out the architecture overview in the wiki.
Installing
Nebula Logger is available as both an unlocked package and a managed package. The metadata is the same in both packages, but there are some differences in the available functionality & features. All examples in README are for the unlocked package (no namespace) - simply add the Nebula namespace to the examples if you are using the managed package.
| Unlocked Package (Recommended) | Managed Package | |
|---|---|---|
| Namespace | none | Nebula |
| Future Releases | Faster release cycle: new patch versions are released (e.g., v4.4.x) for new enhancements & bugfixes that are merged to the main branch in GitHub |
Slower release cycle: new minor versions are only released (e.g., v4.x) once new enhancements & bugfixes have been tested and code is stabilized |
| Public & Protected Apex Methods | Any public and protected Apex methods are subject to change in the future - they can be used, but you may encounter deployment issues if future changes to public and protected methods are not backwards-compatible |
Only global methods are available in managed packages - any global Apex methods available in the managed package will be supported for the foreseeable future |
| Apex Debug Statements | System.debug() is automatically called - the output can be configured with LoggerSettings__c.SystemLogMessageFormat__c to use any field on LogEntryEvent__e |
Requires adding your own calls for System.debug() due to Salesforce limitations with managed packages |
| Logger Plugin Framework | Leverage Apex or Flow to build your own "plugins" for Logger - easily add your own automation to the any of the included objects: LogEntryEvent__e, Log__c, LogEntry__c, LogEntryTag__c and LoggerTag__c. The logger system will then automatically run your plugins for each trigger event (BEFORE_INSERT, BEFORE_UPDATE, AFTER_INSERT, AFTER_UPDATE, and so on). |
This functionality is not currently available in the managed package |
Getting Started
After installing Nebula Logger in your org, there are a few additional configuration changes needed...
- Assign permission set(s) to users
- See the wiki page [Assigning Permission Sets](https://github.com/jongpie/NebulaLogg





