Big Object Archiving plugin
The Big Object Archiving plugin copies logs to a LogEntryArchive__b big object before LogBatchPurger deletes them. Data remains queryable long-term without counting against custom object storage.
What it does
- Registers a batch plugin on
LogBatchPurger. - Adds a new
Archivevalue toLogPurgeAction__c. When set,LogBatchPurgercalls the plugin to copy entries to the big object, then deletes the original records. - Provides a
LogEntryArchive__bbig object with fields mirroringLogEntry__cfor archival storage.
Big object storage
Big objects are Salesforce’s high-volume, asynchronous storage. They:
- Count against a separate storage bucket than regular custom objects.
- Are queried via SOQL (with limitations - only indexed fields, no
LIMITorORDER BY). - Are much cheaper per record than custom objects.
- Are effectively write-once; updates and deletes have significant restrictions.
Trade-off: archived logs are still there, but investigation is less flexible than querying LogEntry__c directly.
Installation
The Big Object Archiving plugin ships as its own unlocked package. Install it after the core Nebula Logger unlocked package.
Install via URL or sf package install. See the GitHub releases page for the current package ID.
After installation, assign the LoggerLogEntryArchiveAdmin permission set to admins who need to configure it or query the big object.
Configuration
- Ensure the plugin’s
LoggerPlugin__mdtrecord hasIsEnabled__c = true. - Set
LoggerSettings__c.DefaultLogPurgeAction__c = 'Archive'at the org default (or the profile / user level for the populations you want to archive). - Optionally use scenario rules to keep certain scenarios archived while others get deleted.
When to use it
- Regulated processes that require long-term retention.
- Orgs where dropping
LoggingLevel__cto production levels still generates enough log volume to strain storage. - Post-incident forensics - archived data remains queryable for months or years without inflating live storage.
Querying archived logs
List<LogEntryArchive__b> archived = [ SELECT Message__c, LoggingLevel__c, Timestamp__c FROM LogEntryArchive__b WHERE UserId__c = :UserInfo.getUserId()];Big object SOQL only supports filters on indexed fields, and there’s no LIMIT or ORDER BY on non-indexed columns. Check the big object’s field definitions for what’s indexed before writing queries.
Where next
- Big Object Archiving plugin reference - auto-generated Apex +
LogEntryArchive__bbig object reference. - Purge actions - how the
Archiveaction fits into the purge flow. - Retention date semantics - what “aged out” means.