Skip to content

Releases: jongpie/NebulaLogger

Bugfix: Name Shadowing Issues for Several Schema Apex Classes

21 Jan 22:38
579286d
Compare
Choose a tag to compare

Thanks to @amp42 for reporting this bug!

Core Unlocked Package Changes

Switched Using Fully-Qualified Class Names in the Schema Namespace

  • Fixed #584 (reported by @amp42) by switching to using fully-qualified Apex class references to several classes in the Schema namespace, like Schema.User, to avoid collision issues in orgs that use name-shadowing classes. These class references are now fully-qualified throughout the codebase. This is the same concept & approach as the changes made in v4.9.0, v4.9.4, and v4.9.6 to fully-qualify references to classes & enums in the System namespace

    • Schema.Account (these references are only used for tests & sample recipes, not in Nebula Logger's core code)
    • Schema.AuthSession
    • Schema.LoginHistory
    • Schema.Network
    • Schema.Organization
    • Schema.Profile
    • Schema.Topic
    • Schema.TopicAssignment
    • Schema.User

Installation Info

Core Unlocked Package - no namespace

Full Changelog: v4.12.4...v4.12.5

Bugfix: Child Log__c Records Not Properly Linked to Parent Log__c Records

21 Jan 18:00
2735d4e
Compare
Choose a tag to compare

Thanks to @ctcforce for reporting this bug!

Core Unlocked Package Changes

Logger Apex Class Changes

  • Resolved #585 (reported by @ctcforce) by updating LogHandler to handle some scenarios where a Log__c record would have a value in ParentLogTransactionId__c but a null value in ParentLog__c. Now in an AFTER_INSERT context, LogHandler requeries any potentially orphaned child Log__c records and links them to their parent Log__c records. Please note that this does not fix any existing problematic data in your org - it only prevents new problematic records from being created. To fix existing data in an org, you can run this anonymous Apex script:

    List<Log__c> unlinkedChildLogs = [
      SELECT Id, ParentLogTransactionId__c
      FROM Log__c
      WHERE ParentLogTransactionId__c != NULL AND ParentLog__c = NULL
    ];
    List<String> parentLogTransactionIds = new List<String>();
    for (Log__c unlinkedChildLog : unlinkedChildLogs) {
        parentLogTransactionIds.add(unlinkedChildLog.ParentLogTransactionId__c);
    }
    
    Map<String, Log__c> parentLogTransactionIdToLog = new Map<String, Log__c>();
    for (Log__c parentLog : [SELECT Id, TransactionId__c FROM Log__c WHERE TransactionId__c IN :parentLogTransactionIds]) {
        parentLogTransactionIdToLog.put(parentLog.TransactionId__c, parentLog);
    }
    
    for (Log__c unlinkedChildLog : unlinkedChildLogs) {
        unlinkedChildLog.ParentLog__c = parentLogTransactionIdToLog.get(unlinkedChildLog.ParentLogTransactionId__c)?.Id;
    }
    update unlinkedChildLogs;

Installation Info

Core Unlocked Package - no namespace

Full Changelog: v4.12.3...v4.12.4

Bugfix for UserInfo.getSessionId() Exception

21 Jan 16:14
b0bec13
Compare
Choose a tag to compare

Thanks to @dvanlooy for reporting this bug!

Core Unlocked Package Changes

Logger Apex Class Changes

  • Resolved #598 (reported by @dvanlooy) by adding a try-catch block around the usage of System.UserInfo.getSessionId() - in some situations, such as a connected app using JWT, calling this method will throw an exception
  • Optimized how Logger.TRANSACTION_QUIDDITY is loaded so it doesn't repeatedly try to load in transactions where there isn't an active quiddity

Installation Info

Core Unlocked Package - no namespace

Full Changelog: v4.12.2...v4.12.3

Automatically Select a Default Field Set in LWC relatedLogEntries

20 Jan 17:13
c1aeecd
Compare
Choose a tag to compare

Thanks to @shreyas-girjapure for suggesting this enhancement!

Core Unlocked Package Changes

relatedLogEntries LWC Changes

  • Resolved #596 by automatically setting a default LogEntry__c field set when adding the LWC relatedLogEntries in App Builder. Previously, admins & developers had to manually select a field set first.

    image

  • Added new LoggerParameter__mdt record DefaultLogEntryRelatedListFieldSet to control which field set is automatically selected as the default. If you have your own field set that you would like to be automatically selected in App Builder, simply update this record with the API name of your own field set.

    image

Installation Info

Core Unlocked Package - no namespace

Full Changelog: v4.12.1...v4.12.2

Improved Error Emails

18 Jan 15:37
b24d1f5
Compare
Choose a tag to compare

Thanks so much to @alanjaouen for this release!

Core Unlocked Package Changes

Error Email Notification Changes

  • When Nebula Logger has an error (due to a bug, platform limits, etc), an error email is automatically sent to admins using the Apex class LoggerEmailSender - these emails previously did not contain enough information to troubleshoot some issues. @alanjaouen reported this in issue #590 and fixed it in PR #591 by updating LoggerEmailSender to include the list of relevant fields for any DML failures that can occur (such as creating Log__c and LogEntry__c records).

Installation Info

Core Unlocked Package - no namespace

Full Changelog: v4.12.0...v4.12.1

v4.12.0 - Winter '24 Release

09 Nov 03:45
53af967
Compare
Choose a tag to compare

Managed Package Release - v4.12.0

This release is for both the unlocked package (as always), as well as the managed package! You can see everything that's changed between v4.11.0 and v4.12.0 by reviewing:

  • The v4.12.0 milestone to see all of the issues & pull requests that are included in the this release.
  • The diff between v4.11.0 and v4.12.0 to see all of the code & metadata changes that have been committed since the last managed package release.

For orgs that are upgrading to this version of the managed package: this release now includes, for the first time, CustomIndex metadata in the managed package. This metadata has already been used in the unlocked packages since v4.10.5, but was previously excluded in the v4.11.0 release of the managed package due to the metadata type being relatively new. At the moment, there are 2 custom indexes included:

  1. Nebula__Log__c.Nebula__LogRetentionDate__c - initially introduced in the unlocked package in v4.11.5
  2. Nebula__LogEntry__c.Nebula__OriginLocation__c - initially introduced in the unlocked package in v4.10.5

These new custom indexes should improve the performance of other metadata that filters on these fields, such as SOQL queries, reports, list views, etc.

Core Unlocked Package Changes - v4.12.0

Winter '24 Release Upgrade

  • Updated all metadata to API v59.0 (Winter '24 release)
  • Switched from using Url.getSalesforceBaseUrl() to Url.getOrgDomainUrl() - Url.getSalesforceBaseUrl() was deprecated in v59.0

Enhancements

  • Resolved #571 by adding new formula fields Log__c.TransactionScenarioText__c and LogEntry__c.EntryScenarioText__c that display the corresponding scenario names, stored either in lookups or in text fields. These fields help to simplify reporting & automation that rely on the text value of a scenario's name.

Bugfixes

  • Fixed #576 by switching to using a Map<String, SObject> internally + replacing null with '' empty string when logging Map<Id, SObject>, and fixed an unreported issue with record stripping not being applied to Map<Id, SObject>

Installation Info

Core Unlocked Package - no namespace

Full Changelog: v4.11.12...v4.12.0

Core Managed Package - Nebula namespace

Full Changelog: v4.11.0...v4.12.0

Bugfix for Lightning Component Entries Not Always Saving

24 Oct 01:51
b140e72
Compare
Choose a tag to compare

Core Unlocked Package Changes

logger LWC Changes

  • @jamessimone fixed #518 by updating logger LWC to defer calling console.log() and to defer saving log entries until after LoggerSettings__c data has been loaded for the current user.
    • Previously, logging in some lifecycle events, such as connectedCallback(), would unintentionally (and inconsistently) skip some log entries, resulting in data loss of some logging data. Thanks to @shuylern for reporting this issue!

Installation Info

Core Unlocked Package - no namespace

Full Changelog: v4.11.11...v4.11.12

Reduced SingleEmailMessage limit usage

15 Oct 02:22
77fe275
Compare
Choose a tag to compare

Core Unlocked Package Changes

LoggerEmailSender Changes

  • Fixed #369 by changing how failure emails are sent to the 'Apex Exception Email' recipients (shown in the screenshot below, configurable under Setup --> Apex Exception Email)
    • Previously, the user ID (ApexEmailNotification.UserId) of Salesforce users configured as recipients (labeled as '1' in the screenshot below) was passed to the instance method Messaging.SingleEmailMessage.setToAddresses(), resulting in the email counting as an email to an external email address, which has an org daily limit. You can check your org's limit using this Apex snippet: System.debug(OrgLimits.getMap().get('SingleEmail'));
    • Now, the user ID (ApexEmailNotification.UserId) is passed to the instance method Messaging.SingleEmailMessage.setTargetObjectId(). Using setTargetObjectId() to send emails to users does not count towards the org's daily limit
    • External email addresses (labeled as '2' in the screenshot below, configured under Setup --> Apex Exception Email) will still count towards the org's daily email limit

image

Installation Info

Core Unlocked Package - no namespace

Full Changelog: v4.11.10...v4.11.11

Dynamic field visibility for LogEntry__c HTTP response header fields

13 Oct 01:11
f2fe85c
Compare
Choose a tag to compare

Core Unlocked Package Changes

New LogEntry__c checkbox fields

  • Added new checkbox fields on LogEntry__c for each long textarea fields that didn't previously have an equivalent checkbox field. Note: these new fields will be inaccurate for existing LogEntry__c records (but correct on new records).
    • HasDatabaseResultJson__c - set based on logEntry.DatabaseResultJson__c != null
    • HasHttpRequestBody__c - set based on logEntry.HttpRequestBody__c != null
    • HasHttpResponseBody__c - set based on logEntry.HttpResponseBody__c != null
    • HasHttpResponseHeaderKeys__c - set based on logEntry.HttpResponseHeaderKeys__c != null
    • HasHttpResponseHeaders__c - set based on logEntry.HttpResponseHeaders__c != null
  • Code cleanup: rewrote several existing tests in LogEntryHandler_Tests to be true unit tests that do not rely on DML

Dynamic field visibility for LogEntry__c HTTP response header field

  • Resolved #566 by updating LogEntryRecordPage.flexipage-meta.xml to have conditional visibility for the fields HttpResponseHeaderKeys__c and HttpResponseHeaders__c, based on the new checkbox field HasHttpResponseHeaders__c

Installation Info

Core Unlocked Package - no namespace

Full Changelog: v4.11.9...v4.11.10

Bugfix: Usernames on Log Entry Summary Report show up in an HTML Tag

11 Oct 03:50
4ede2fb
Compare
Choose a tag to compare

Thanks so much to @JMercie for yet another amazing contribution (PR #567), and thanks so much to @Senay-Ersen for reporting this issue (issue #543)!

Core Unlocked Package Changes

Bugfix: Usernames on Log Entry Summary Report show up in an HTML Tag

Resolved #543 with a couple of new formula fields + report update

  • Added new formula fields Log__c.LoggedByUsernameText__c and LogEntry__c.LoggedByUsernameText__c that display only the text of the logging user's username (compared to the existing fields LoggedByUsernameLink__c that display the logging user's username as a clickable link)
  • Updated report LogEntrySummary to use the new field Log__c.LoggedByUsernameText__c (instead of the problematic-in-reports formula field Log__c.LoggedByUsernameLink__c)

Installation Info

Core Unlocked Package - no namespace

Full Changelog: v4.11.8...v4.11.9