Data Model Reference
The custom objects, platform event, and settings object that make up Nebula Logger's data model, and how they relate to each other.
Nebula Logger’s schema is spread across four architectural layers described in the project wiki. The Logger Engine layer publishes a single platform event, LogEntryEvent__e, every time application code calls the logger — this decouples the act of logging from the act of saving, so a log entry can be captured even if the surrounding transaction later fails or rolls back. The Log Management layer is responsible for turning those events into durable records: each LogEntryEvent__e is saved as a LogEntry__c record, and related entries are grouped under a single parent Log__c record (one Log__c per transaction, keyed on a shared transaction ID). Tagging is modeled as a many-to-many relationship: LoggerTag__c holds the reusable tag values, and the LogEntryTag__c junction object links individual LogEntry__c records to those tags. The Configuration layer’s LoggerSettings__c is a hierarchy custom setting, so it can be defaulted at the org level and overridden per-profile or per-user to control things like whether logging is enabled, which logging level is captured, and how long logs are retained. A fourth object referenced here, LoggerScenario__c, backs the “scenario” feature that lets logs and entries be grouped and filtered by a named business process rather than only by transaction. A Plugin layer (not covered on this page) can extend behavior on any of these five objects.
LoggerSettings__c isn’t shown above — it’s a hierarchy custom setting that configures the pipeline (org, profile, or user level), not a record these objects link to by foreign key.
The sections below group a curated subset of each object’s real field names (verified against the object metadata) into naming-pattern categories. Field purposes are inferred from their names and the wiki text — where the inference is a guess rather than a documented fact, this page says so plainly.
Log__c
One Log__c record per logged transaction; acts as the parent/summary record for all of the LogEntry__c records created during that transaction.
Transaction & Apex async context (infers from naming convention)
TransactionId__cParentLogTransactionId__cParentLog__cParentLogLink__cParentSessionId__cAsyncContextType__cAsyncContextParentJobId__cAsyncContextChildJobId__cAsyncContextTriggerId__c
User & org context
LoggedBy__cLoggedByUsername__cLoggedByUsernameLink__cLoggedByFederationIdentifier__cImpersonatedBy__cImpersonatedByUsernameLink__cOrganizationId__cOrganizationName__cOrganizationType__cProfileId__cProfileName__cUserRoleName__cUserType__c
Login / session context (infers from naming convention — likely sourced from LoginHistory and session APIs)
LoginType__cLoginApplication__cLoginBrowser__cLoginPlatform__cSessionId__cSessionType__cSessionSecurityLevel__cSourceIp__c
Status / lifecycle (verified against the real object’s field metadata)
Status__c?Picklist
New, Ignored, On Hold, In Progress, or Done.
Picklist"New"IsClosed__c?Checkbox
Auto-set from Status__c via the LogStatus__mdt mapping.
CheckboxfalseIsResolved__c?Checkbox
Auto-set alongside IsClosed__c when the closed status is also configured as resolved.
CheckboxfalseClosedBy__c?Lookup(User)
Auto-populated when the log is closed.
Lookup(User)ClosedDate__c?DateTime
Auto-populated when the log is closed.
DateTimePriority__c?Picklist
High, Medium, or Low.
Picklist"Low"LogRetentionDate__c?Date
The date this log can be automatically deleted by LogBatchPurger.
DateLogPurgeAction__c?Picklist
What LogBatchPurger does once LogRetentionDate__c has passed. Only Delete ships out of the box; plugins can add more.
Picklist"Delete"Scenario & tagging summary
Scenario__cTransactionScenario__cTransactionScenarioName__cTotalLogEntries__cMaxLogEntryLoggingLevelOrdinal__c
This highlights the most illustrative fields; see the object metadata in the source repository for the complete list.
LogEntry__c
The individual log line record — one per call to the logger within a transaction — related back to its parent Log__c.
Apex context (infers from naming convention)
ApexClassName__cApexClassId__cApexInnerClassName__cApexMethodName__cApexClassApiVersion__c
Exception / stack trace context
ExceptionType__cExceptionMessage__cExceptionStackTrace__cExceptionLocation__cHasException__cHasStackTrace__cStackTrace__c
HTTP / API context (infers from naming convention — populated when logging callouts or Apex REST requests)
HttpRequestEndpoint__cHttpRequestMethod__cHttpRequestBody__cHttpResponseStatusCode__cHttpResponseBody__cRestRequestUri__cRestRequestMethod__cRestResponseStatusCode__c
Record & database context
RecordId__cRecordJson__cRecordSObjectType__cDatabaseResultType__cDatabaseResultJson__c
Governor limits snapshot (infers from naming convention — a large Limits*Used__c / Limits*Max__c family, e.g. CPU time, SOQL queries, DML statements)
LimitsCpuTimeUsed__cLimitsCpuTimeMax__cLimitsSoqlQueriesUsed__cLimitsDmlStatementsUsed__cLimitsHeapSizeUsed__c
Logging level & message
LoggingLevel__cLoggingLevelOrdinal__cMessage__cTimestamp__cOrigin__cTags__c
This highlights the most illustrative fields; see the object metadata in the source repository for the complete list.
LogEntryEvent__e
A platform event published in real time whenever the logger API is invoked; its fields are later mapped onto the corresponding LogEntry__c (and, for shared transaction data, Log__c) fields during asynchronous saving. Per the Architecture wiki, this is the single object in the Logger Engine layer.
Apex / trigger context (infers from naming convention)
TriggerIsExecuting__cTriggerOperationType__cTriggerSObjectType__cAsyncContextType__c
HTTP / API context
HttpRequestEndpoint__cHttpRequestMethod__cHttpResponseStatusCode__cRestRequestUri__cRestResponseStatusCode__c
Browser / component context (infers from naming convention — populated by Lightning web component and Aura logging)
BrowserUrl__cBrowserUserAgent__cBrowserFormFactor__cComponentType__c
User & org context
LoggedById__cLoggedByUsername__cOrganizationId__cOrganizationName__cProfileId__cUserType__c
Message & scenario/tagging
Message__cLoggingLevel__cTimestamp__cScenario__cEntryScenario__cTags__cTopics__c
This highlights the most illustrative fields; see the object metadata in the source repository for the complete list.
LoggerSettings__c
A hierarchy custom setting used by the Configuration layer to control logging behavior per-org, per-profile, or per-user (e.g., whether logging/saving is enabled, which logging level to capture, and default log retention/ownership).
Enablement toggles
IsEnabled__cIsSavingEnabled__cIsAnonymousModeEnabled__cIsApexSystemDebugLoggingEnabled__cIsDataMaskingEnabled__cIsRecordFieldStrippingEnabled__cIsJavaScriptConsoleLoggingEnabled__cIsJavaScriptLightningLoggerEnabled__c
Logging level & scheduling
LoggingLevel__cStartTime__cEndTime__c
Log defaults
DefaultSaveMethod__cDefaultLogOwner__cDefaultLogPurgeAction__cDefaultLogShareAccessLevel__cDefaultNumberOfDaysToRetainLogs__cDefaultScenario__cDefaultPlatformEventStorageLocation__cDefaultPlatformEventStorageLoggingLevel__c
This highlights the most illustrative fields; see the object metadata in the source repository for the complete list. (Note: as a hierarchy custom setting, LoggerSettings__c has far fewer fields than the other objects on this page — the full field count here is close to the object’s actual total.)
LoggerTag__c
Holds a reusable, named tag value that can be applied to one or more LogEntry__c records via the LogEntryTag__c junction object.
Name(standard field, not shown in the directory listing but implied by the object’s role as a tag label — infers from Salesforce custom object convention)UniqueId__c— infers from naming convention, likely a dedupe/external-id-style key for the tag valueTotalLogEntries__c— infers from naming convention, likely a rollup count of relatedLogEntryTag__c/LogEntry__crecords
This highlights the most illustrative fields; see the object metadata in the source repository for the complete list. (Note: LoggerTag__c itself is a very small object — only two custom fields were found beyond the standard Name field.)
LogEntryTag__c
The junction object connecting a LogEntry__c to a LoggerTag__c, implementing the many-to-many tagging relationship described in the Architecture wiki.
LogEntry__c— the lookup to the tagged log entryTag__c— the lookup to theLoggerTag__crecordLogEntryTimestamp__c— infers from naming convention, likely a denormalized copy of the parent entry’s timestamp for list-view sortingLogEntryOrigin__c— infers from naming conventionLogLink__c/ParentLogLink__c— infers from naming convention, likely denormalized links back to the parentLog__cLoggedByUsernameLink__c/ImpersonatedByUsernameLink__c/ProfileLink__c— infers from naming convention, denormalized user/profile context copied from the log entryUniqueId__c— infers from naming convention, likely a dedupe/external-id-style key
This highlights the most illustrative fields; see the object metadata in the source repository for the complete list. (Note: LogEntryTag__c itself is a small junction object — the fields above are close to its complete set.)
LoggerScenario__c
Represents a named business scenario that logs and log entries can be associated with (via Log__c.Scenario__c and LogEntry__c.EntryScenario__c), enabling filtering and grouping independent of transaction boundaries — infers from naming convention and its use elsewhere in the schema, since no additional wiki narrative was available for this object.
UniqueId__c— infers from naming convention, likely a dedupe/external-id-style key for the scenario nameName(standard field, not shown in the directory listing but implied by the object’s role as a scenario label — infers from Salesforce custom object convention)
This highlights the most illustrative fields; see the object metadata in the source repository for the complete list. (Note: LoggerScenario__c itself is a very small object — only one custom field was found beyond the standard Name field.)
Based on the real Nebula Logger object metadata and wiki, © Jonathan Gillespie and contributors, MIT License. See github.com/jongpie/NebulaLogger for the complete schema.