Skip to content

Added new Apex method & JavaScript function Logger.setField()

Latest
Compare
Choose a tag to compare
@jongpie jongpie released this 16 Oct 03:00
68c4187

Many thanks to @surajp for sharing some awesome perspectives & suggestions for improving custom field mappings!

Custom field mappings were introduced a few months ago for Apex in v4.13.14, and for lightning components in v4.14.16. Both releases provided the ability to set custom fields on individual log entries - but in situations where a custom field should be set on every generated log entry, setting the field on each entry was very repetitive & tedious & repetitive. It was also repetitive.

  • This release adds the ability to now set fields once per transaction (in Apex) or once per component instance (in JavaScript) - all subsequent log entries will then automatically have your custom field values applied.
  • Individual log entries can still have additional field values set & mapped, giving you multiple options for setting your custom fields.

Core Unlocked Package Changes

New Apex Method Logger.setField()

Resolved #769 by adding a new static method, Logger.setField(). This gives Apex developers a way to set field(s) once per transaction, and the fields will be auto-populated on all LogEntryEvent__e records generated in that transaction.

  • The setField() method has 2 overloads (same as the instance method overloads LogEntryEventBuilder.setField() that were introduced in release v4.13.14)

    1. Logger.setField(Schema.SObjectField field, Object fieldValue) - useful for easily setting the value for a single field
    2. Logger.setField(Map<Schema.SObjectField, Object> fieldToValue) - useful for setting the value for multiple fields
  • The new method supplements the functionality introduced in release v4.13.14, as shown below:

    // 🥳New!
    // Set a custom field on all LogEntryEvent__e records in a transaction,
    // using static method Logger.setField()
    Logger.setField(LogEntryEvent__e.Some_Custom_Field__c, 'the value for all generated entries')
    
    // ℹ️Existing - introduced in v4.13.14
    // Set a custom field on a single LogEntryEvent__e record,
    // using instance method LogEntryEventBuilder.setField()
    Logger.info('hello, world').setField(LogEntryEvent__e.Another_Custom_Field__c, 'the value for this specific entry');

New JavaScript Function logger.setField()

Added JavaScript support for setting fields once per component instance, using logger.setField(). This is the JS equivalent of the new Apex method Logger.setField() (above).

export default class LoggerLWCImportDemo extends LightningElement {
  logger = getLogger();

  connectedCallback() {
    // 🥳New!
    // Set My_Field__c on every log entry event created in this component with the same value
    this.logger.setField({My_Field__c, 'some value that applies to any subsequent entry'});

      // ℹ️Existing - introduced in v4.14.6
    this.logger.warn('hello, world - "a value" set for Some_Other_Field__c').setField({ Some_Other_Field__c: 'a value' });
  }
}

Installation Info

Core Unlocked Package - no namespace

Full Changelog: v4.14.13...v4.14.14