Skip to content

Commit f4addfd

Browse files
Refactored logEntryBuilder.js and loggerService.js to use setScenario() function for setting the scenario field in log entry events (#667)
* Also improved some tests in logger.test.js to validate that the scenario is set for existing entries in the buffer & newly added entries
1 parent 8233697 commit f4addfd

8 files changed

Lines changed: 42 additions & 30 deletions

File tree

README.md

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -5,15 +5,15 @@
55

66
The most robust logger for Salesforce. Works with Apex, Lightning Components, Flow, Process Builder & Integrations. Designed for Salesforce admins, developers & architects.
77

8-
## Unlocked Package - v4.13.6
8+
## Unlocked Package - v4.13.7
99

10-
[![Install Unlocked Package in a Sandbox](./images/btn-install-unlocked-package-sandbox.png)](https://test.salesforce.com/packaging/installPackage.apexp?p0=04t5Y000001MkGxQAK)
11-
[![Install Unlocked Package in Production](./images/btn-install-unlocked-package-production.png)](https://login.salesforce.com/packaging/installPackage.apexp?p0=04t5Y000001MkGxQAK)
10+
[![Install Unlocked Package in a Sandbox](./images/btn-install-unlocked-package-sandbox.png)](https://test.salesforce.com/packaging/installPackage.apexp?p0=04t5Y000001MkHRQA0)
11+
[![Install Unlocked Package in Production](./images/btn-install-unlocked-package-production.png)](https://login.salesforce.com/packaging/installPackage.apexp?p0=04t5Y000001MkHRQA0)
1212
[![View Documentation](./images/btn-view-documentation.png)](https://jongpie.github.io/NebulaLogger/)
1313

14-
`sf package install --wait 20 --security-type AdminsOnly --package 04t5Y000001MkGxQAK`
14+
`sf package install --wait 20 --security-type AdminsOnly --package 04t5Y000001MkHRQA0`
1515

16-
`sfdx force:package:install --wait 20 --securitytype AdminsOnly --package 04t5Y000001MkGxQAK`
16+
`sfdx force:package:install --wait 20 --securitytype AdminsOnly --package 04t5Y000001MkHRQA0`
1717

1818
---
1919

docs/lightning-components/LogEntryBuilder.md

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@
99
- [.setMessage(message)](#LogEntryBuilder+setMessage) [<code>LogEntryBuilder</code>](#LogEntryBuilder)
1010
- [.setRecordId(recordId)](#LogEntryBuilder+setRecordId) [<code>LogEntryBuilder</code>](#LogEntryBuilder)
1111
- [.setRecord(record)](#LogEntryBuilder+setRecord) [<code>LogEntryBuilder</code>](#LogEntryBuilder)
12+
- [.setScenario(scenario)](#LogEntryBuilder+setScenario) [<code>LogEntryBuilder</code>](#LogEntryBuilder)
1213
- [.setError(error)](#LogEntryBuilder+setError) [<code>LogEntryBuilder</code>](#LogEntryBuilder)
1314
- [.addTag(tag)](#LogEntryBuilder+addTag) [<code>LogEntryBuilder</code>](#LogEntryBuilder)
1415
- [.addTags(tags)](#LogEntryBuilder+addTags) [<code>LogEntryBuilder</code>](#LogEntryBuilder)
@@ -65,6 +66,19 @@ Sets the log entry event's record fields
6566
| ------ | ------------------- | ----------------------------------------------------------------------------------------------------- |
6667
| record | <code>Object</code> | The `SObject` record related to the entry. The JSON of the record is automatically added to the entry |
6768

69+
<a name="LogEntryBuilder+setScenario"></a>
70+
71+
### logEntryBuilder.setScenario(scenario) [<code>LogEntryBuilder</code>](#LogEntryBuilder)
72+
73+
Sets the log entry event's scenario field
74+
75+
**Kind**: instance method of [<code>LogEntryBuilder</code>](#LogEntryBuilder)
76+
**Returns**: [<code>LogEntryBuilder</code>](#LogEntryBuilder) - The same instance of `LogEntryBuilder`, useful for chaining methods
77+
78+
| Param | Type | Description |
79+
| -------- | ------------------- | --------------------------------------------------- |
80+
| scenario | <code>String</code> | The string to use to set the entry's scenario field |
81+
6882
<a name="LogEntryBuilder+setError"></a>
6983

7084
### logEntryBuilder.setError(error) [<code>LogEntryBuilder</code>](#LogEntryBuilder)

nebula-logger/core/main/logger-engine/classes/Logger.cls

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@
1515
global with sharing class Logger {
1616
// There's no reliable way to get the version number dynamically in Apex
1717
@TestVisible
18-
private static final String CURRENT_VERSION_NUMBER = 'v4.13.6';
18+
private static final String CURRENT_VERSION_NUMBER = 'v4.13.7';
1919
private static final System.LoggingLevel FALLBACK_LOGGING_LEVEL = System.LoggingLevel.DEBUG;
2020
private static final List<LogEntryEventBuilder> LOG_ENTRIES_BUFFER = new List<LogEntryEventBuilder>();
2121
private static final String MISSING_SCENARIO_ERROR_MESSAGE = 'No logger scenario specified. A scenario is required for logging in this org.';

nebula-logger/core/main/logger-engine/lwc/logger/__tests__/logger.test.js

Lines changed: 5 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -43,16 +43,10 @@ describe('logger lwc import tests', () => {
4343
const logger = await createLogger();
4444
const scenario = 'some scenario';
4545
const message = 'some message';
46+
4647
const firstLogEntry = logger.finest(message).getComponentLogEntry();
47-
await flushPromises();
48-
expect(firstLogEntry.scenario).toBeNull();
49-
expect(logger.getBufferSize()).toEqual(1);
48+
logger.setScenario(scenario);
5049
const secondLogEntry = logger.info(message).getComponentLogEntry();
51-
await flushPromises();
52-
expect(secondLogEntry.scenario).toBeNull();
53-
expect(logger.getBufferSize()).toEqual(2);
54-
55-
await logger.setScenario(scenario);
5650

5751
expect(firstLogEntry.scenario).toEqual(scenario);
5852
expect(secondLogEntry.scenario).toEqual(scenario);
@@ -519,16 +513,12 @@ describe('logger lwc legacy markup tests', () => {
519513
const logger = createElement('c-logger', { is: Logger });
520514
document.body.appendChild(logger);
521515
await flushPromises();
516+
const scenario = 'some scenario';
522517
const message = 'some message';
523-
const firstLogEntry = await logger.finest(message).getComponentLogEntry();
524-
expect(firstLogEntry.scenario).toBeNull();
525-
expect(logger.getBufferSize()).toEqual(1);
526-
const secondLogEntry = await logger.info(message).getComponentLogEntry();
527-
expect(secondLogEntry.scenario).toBeNull();
528-
expect(logger.getBufferSize()).toEqual(2);
529518

530-
const scenario = 'another scenario';
519+
const firstLogEntry = logger.finest(message).getComponentLogEntry();
531520
logger.setScenario(scenario);
521+
const secondLogEntry = logger.info(message).getComponentLogEntry();
532522

533523
expect(firstLogEntry.scenario).toEqual(scenario);
534524
expect(secondLogEntry.scenario).toEqual(scenario);

nebula-logger/core/main/logger-engine/lwc/logger/logEntryBuilder.js

Lines changed: 11 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44
//------------------------------------------------------------------------------------------------//
55
import FORM_FACTOR from '@salesforce/client/formFactor';
66

7-
const CURRENT_VERSION_NUMBER = 'v4.13.6';
7+
const CURRENT_VERSION_NUMBER = 'v4.13.7';
88

99
// JavaScript equivalent to the Apex class ComponentLogger.ComponentLogEntry
1010
const ComponentLogEntry = class {
@@ -78,6 +78,16 @@ const LogEntryBuilder = class {
7878
return this;
7979
}
8080

81+
/**
82+
* @description Sets the log entry event's scenario field
83+
* @param {String} scenario The string to use to set the entry's scenario field
84+
* @return {LogEntryBuilder} The same instance of `LogEntryBuilder`, useful for chaining methods
85+
*/
86+
setScenario(scenario) {
87+
this.#componentLogEntry.scenario = scenario;
88+
return this;
89+
}
90+
8191
/**
8292
* @description Sets the log entry event's exception fields
8393
* @param {Error} error The instance of a JavaScript `Error` object to use, or an Apex HTTP error to use

nebula-logger/core/main/logger-engine/lwc/logger/loggerService.js

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -113,12 +113,9 @@ const LoggerService = class {
113113
}
114114

115115
_newEntry(loggingLevel, message) {
116-
// Builder is returned immediately but console log will be determined after loading settings from server
117116
const logEntryBuilder = newLogEntry(loggingLevel, this.#settings?.isConsoleLoggingEnabled);
118117
logEntryBuilder.setMessage(message);
119-
if (this.#scenario) {
120-
logEntryBuilder.scenario = this.#scenario;
121-
}
118+
logEntryBuilder.setScenario(this.#scenario);
122119
if (this._meetsUserLoggingLevel(loggingLevel)) {
123120
this.#componentLogEntries.push(logEntryBuilder.getComponentLogEntry());
124121
}

package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "nebula-logger",
3-
"version": "4.13.6",
3+
"version": "4.13.7",
44
"description": "The most robust logger for Salesforce. Works with Apex, Lightning Components, Flow, Process Builder & Integrations. Designed for Salesforce admins, developers & architects.",
55
"author": "Jonathan Gillespie",
66
"license": "MIT",

sfdx-project.json

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -14,9 +14,9 @@
1414
"path": "./nebula-logger/core",
1515
"definitionFile": "./config/scratch-orgs/base-scratch-def.json",
1616
"scopeProfiles": true,
17-
"versionNumber": "4.13.6.NEXT",
18-
"versionName": "View Log Entry Metadata Custom Permission",
19-
"versionDescription": "Added new custom permission CanViewLogEntryMetadata so that users without query access to ApexClass and ApexTrigger can still see the source code in the LWC logEntryMetadataViewer",
17+
"versionNumber": "4.13.7.NEXT",
18+
"versionName": "Fixed function setScenario() in logger LWC",
19+
"versionDescription": "Fixed an issue in the logger LWC's function setScenario() where the value was sometimes (often?) incorrectly set to null",
2020
"releaseNotesUrl": "https://github.com/jongpie/NebulaLogger/releases",
2121
"unpackagedMetadata": {
2222
"path": "./nebula-logger/extra-tests"
@@ -174,6 +174,7 @@
174174
"Nebula Logger - Core@4.13.4-logger-parameter-comments": "04t5Y000001MkFBQA0",
175175
"Nebula Logger - Core@4.13.5-performance-improvements": "04t5Y000001MkGnQAK",
176176
"Nebula Logger - Core@4.13.6-view-log-entry-metadata-custom-permission": "04t5Y000001MkGxQAK",
177+
"Nebula Logger - Core@4.13.7-fixed-function-setscenario()-in-logger-lwc": "04t5Y000001MkHRQA0",
177178
"Nebula Logger - Core Plugin - Async Failure Additions": "0Ho5Y000000blO4SAI",
178179
"Nebula Logger - Core Plugin - Async Failure Additions@1.0.0": "04t5Y0000015lhiQAA",
179180
"Nebula Logger - Core Plugin - Async Failure Additions@1.0.1": "04t5Y0000015lhsQAA",

0 commit comments

Comments
 (0)