SightLane Logging Methods Reference

Following is a reference of methods that you can use in your Apex Logging to capture the right data in your Apex-based monitors

 

Instance Methods

Instance methods are all found in the EventLogger class and are used in classic event logging use cases.

  • void log(String logString)
  • void log(String logString, String logLevel)
  • void log(List<String> logList)
  • void log(List<String> logList, String logLevel)
  • void logSpace()
  • void logException (Exception e)
  • void setSummaryLog(String summaryLog)
  • void setPrimaryRecordId(Id primaryRecordId)
  • void setEventId(String eventId)
  • void setRunningUser(User runningUser)
  • void logPopulatedFields(SObject objRecord)
  • void logPopulatedFields(List<SObject> objRecordList)
  • void logPopulatedFields(SObject objRecord, List<String> fieldNames)
  • void logPopulatedFields(List<SObject> objRecordList, List<String> fieldNames)
  • void setNeedsReview(boolean value)
  • void reportToSightLane()
  • void reportFailureToSightLane()
  • void reportFailureToSightLane(Exception e)
  • void reportFailureToSightLane(Exception e, boolean addExceptionToLog)

Static Methods

Static methods are all found in the Logging class and are used in static logging use cases.

  • void log(String logString)
  • void log(String logString, String logLevel)
  • void log(List<String> logList)
  • void log(List<String> logList, String logLevel)
  • void logSpace()
  • void setNeedsReview()
  • void logException(Exception e)
  • void logPopulatedFields(SObject objRecord)
  • void logPopulatedFields(List<SObject> objRecordList)
  • void logPopulatedFields(SObject objRecord, List<String> fieldNames)
  • void logPopulatedFields(List<SObject> objRecordList, List<String> fieldNames)
  • EventLogger startLog(String monitorName)
  • EventLogger startLog(String monitorName, Id primaryRecordId)
  • EventLogger getCurrentEventLogger(String newMonitorName)
  • EventLogger getCurrentEventLogger(String newMonitorName, String newPrimaryRecord)
  • void reportToSightLane(String monitorName, String logStatement)
  • void reportFailureToSightLane(String monitorName, String logStatement)
  • void reportFailureToSightLane(String monitorName, String logStatement, Exception e)
  • void reportToSightLane(String monitorName, List<String> logStatements)
  • void reportFailureToSightLane(String monitorName, List<String> logStatements)
  • void reportFailureToSightLane(String monitorName, List<String> logStatements, Exception e)
  • void reportToSightLane(String monitorName, String logStatement, SObject record)
  • void reportFailureToSightLane(String monitorName, String logStatement, SObject record)
  • void reportFailureToSightLane(String monitorName, String logStatement, Exception e, SObject record)
  • void reportToSightLane(String monitorName, List<String> logStatements, SObject record)
  • void reportFailureToSightLane(String monitorName, List<String> logStatements, SObject record)
  • void reportFailureToSightLane(String monitorName, List<String> logStatements, Exception e, SObject record)
Instance Method Name

void log(String logString)

Add a simple log statement

eventLogger.log('This is my statement');

Result:  2021-08-02 18:25:30 | This is my statement

void log(String logString, String logLevel)

Add a simple log statement and level to the current log

eventLogger.log('This is my statement','Error');

Result:  2021-08-02 18:25:30 | [Error] This is my statement

void log(List<String> logList)

Add a collection of string values to the existing log as separate log statements

eventLogger.log(new List<String>{'This is my statement', 'This is my other statement'});

Result:  2021-08-02 18:25:30 | This is my statement

            2021-08-02 18:25:30 | This is my other statement

void log(List<String> logList, String logLevel)

Add a collection of string values and a logLevel to the existing log as separate log statements

eventLogger.log(new List<String>{'This is my statement', 'This is my other statement'},'Error');

Result:  2021-08-02 18:25:30 | [Error] This is my statement

            2021-08-02 18:25:30 | [Error] This is my other statement

void logSpace()

Add a break between groups of log statements.  Helpful for readability in longer logs with lots of content.

eventLogger.log('This is my statement','Error');
eventLogger.logSpace();
eventLogger.log('This is my other statement');

Result:  2021-08-02 18:25:30 | This is my statement

            2021-08-02 18:25:30 | This is my other statement

void logException (Exception e)

Formats logging of exception content to include Exception Type, Line Number, and Message

eventLogger.logException(e);

Result:  20:24:25 | [SightLane Logger] Type: System.MathException | Line: 18 | Message: Divide by 0

void setSummaryLog(String summaryLog)

Sets an Event's Event Log Summary value.  A simple statement about the results of an event.

eventLogger.setSummaryLog('The process completed successfully');

Result:  (Event Summary field value updated)

void setPrimaryRecordId(Id primaryRecordId)

Sets an Event's Primary Record Id value.  Associates this log with a specific data record.

eventLogger.setPrimaryRecordId(myObect.Id);

Result:  (Primary Record Id field value updated)

void setEventId(String eventId)

Sets the Event's Event Id value.  Event Id refers to a user defined string that uniquely identifies this process.  Any future logs of the same type and Event Id will append their logs to the existing Event.

eventLogger.setEventId('myuniquecontextid1234567890');

Result:  (Logs are appended to the existing Event with the same id)

void setRunningUser(User runningUser)

Sets the Event's running User.  runningUser refers to an instance of the User object (not just an id).  This is helpful for Platform Event triggers and other processes that list Automated Process or a generic Integration User as the Event user.

eventLogger.setRunningUser(intendedUserVariable);

Result:  (The event will be recorded as having been run by the supplied User)


void logPopulatedFields(SObject objRecord)

Adds all populated field values for the supplied instance object, to the logs for this Event

Contact myContact = new Contact(FirstName='Lionel',LastName='Messi',email='lm@bestever.com');
eventLogger.logPopulatedFields(myContact);

Result:  2021-08-02 18:25:30 |FirstName - Lionel

            2021-08-02 18:25:30 |LastName - Messi

            2021-08-02 18:25:30 |LastName - lm@bestever.com

void logPopulatedFields(List<SObject> objRecordList)

Adds all populated field values for the supplied instance objects, to the logs for this Event

Contact myContact = new Contact(FirstName='Lionel',LastName='Messi',email='lm@bestever.com');
Contact myContact2 = new Contact(FirstName='Christiano',LastName='Ronaldo',email='cr@bestever.com');
eventLogger.logPopulatedFields(new List<SObject>{myContact, myContact2});

Result:  2021-08-02 18:25:30 |FirstName - Lionel

            2021-08-02 18:25:30 |LastName - Messi

            2021-08-02 18:25:30 |Email - lm@bestever.com

            2021-08-02 18:25:30 |FirstName - Christiano

            2021-08-02 18:25:30 |LastName - Ronaldo

            2021-08-02 18:25:30 |Email - cr@bestever.com

void logPopulatedFields(SObject objRecord, List<String> fieldNames)

Adds all populated specified field values for the supplied instance object, to the logs for this Event

Contact myContact = new Contact(FirstName='Lionel',LastName='Messi',email='lm@bestever.com');
Contact myContact2 = new Contact(FirstName='Christiano',LastName='Ronaldo',email='cr@bestever.com');
eventLogger.logPopulatedFields(myContact, new List<String>{'LastName','Email'});

Result:  2021-08-02 18:25:30 |LastName - Messi

            2021-08-02 18:25:30 |Email - lm@bestever.com

void logPopulatedFields(List<SObject> objRecordList, List<String> fieldNames)

Adds all populated field values for the supplied instance objects, to the logs for this Event

Contact myContact = new Contact(FirstName='Lionel',LastName='Messi',email='lm@bestever.com');
Contact myContact2 = new Contact(FirstName='Christiano',LastName='Ronaldo',email='cr@bestever.com');
eventLogger.logPopulatedFields(new List<SObject>{myContact, myContact2}, new List<String>{'Email'});

Result:  2021-08-02 18:25:30 |Email - lm@bestever.com

            2021-08-02 18:25:30 |Email - cr@bestever.com

void setNeedsReview(boolean needsReview)

Sets the Needs Review flag for events.  Allows for notifications, even when there has NOT been an exception.

eventLogger.setNeedsReview(true);

Result: (Needs Review field value updated, Result icon changed in interface)

void reportToSightLane()

Commits all logs to SightLane and saves the new Event.  Usually called at the end of a process.

eventLogger.log('This is my statement');
eventLogger.log('This is my other statement');
eventLogger.reportToSightLane();

Result:  (Event record saved with all log statements)

void reportFailureToSightLane()

Commits all logs to SightLane and saves the new Event with a status of 'Failed'.  This version of the method is used to report an event as failed for logical or strategic reasons (when there has not been an exception).

Warning:  Mistaking this method for the version that takes an Exception parameter is a common mistake!

if(getMyCriticalRecords().size() == 0){
eventLogger.reportFailureToSightLane();
}

Result:  (Event created in a Failed status.  Result icon changed in the user interface)

void reportFailureToSightLane(Exception e)

Commits all logs to SightLane and saves the new Event with a status of 'Failed'.  Usually called at the end of a process and usually utilized within appropriate exception handling

try{
eventLogger.log('This is my statement');
Integer i = 4/0;
} catch (System.MathExcetpion e){
eventLogger.reportFailureToSightLane(e);
}

Result:  (Event in a Failed status.  Exception data added to log.  Result icon changed in interface)

void reportFailureToSightLane(Exception e, boolean addExceptionToLog)

Commits all logs to SightLane and saves the new Event with a status of 'Failed'.  Usually called at the end of a process and usually utilized within appropriate exception handling.  The second parameter determines whether the exception information is added directly to the log content.  If this is false, Stack Trace information will only be stored on the Event record and will be viewable in the source viewer component.

try{
eventLogger.log('This is my statement');
Integer i = 4/0;
} catch (System.MathExcetpion e){
eventLogger.reportFailureToSightLane(e, false);
}

Result:  (Event in a Failed status.  Exception data added to log.  Result icon changed in interface)


Static methods are used for two primary reasons:

  1. To establish a new monitor/logger within your Apex code
  2. To add log statements to the "current" log.  For example, if you establish and complete a monitor in your controller method, and you want to add a log statements regarding functionality or logic that exists within a helper method that is called by the controller, use the static version of the log method.  This allows a helper method's logs to be added to the monitor of the calling method.
Static Method Name

static void log(String logString)

Add a simple log statement to the current log

SightLane.Logging.log('This is my statement');

Result:  2021-08-02 18:25:30 | This is my statement

static void log(String logString, String logCategory)

Add a simple log statement and  category to the current log

SightLane.Logging.log('This is my statement','Error');

Result:  2021-08-02 18:25:30 | [Error] This is my statement

void log(List<String> logList)

Add a collection of string values to the existing log as separate log statements

SightLane.Logging.log(new List<String>{'This is my statement', 'This is my other statement'});

Result:  2021-08-02 18:25:30 | This is my statement

            2021-08-02 18:25:30 | This is my other statement

void log(List<String> logList, String category)

Add a collection of string values and a category to the existing log as separate log statements

SightLane.Logging.log(new List<String>{'This is my statement', 'This is my other statement'},'Error');

Result:  2021-08-02 18:25:30 | [Error] This is my statement

            2021-08-02 18:25:30 | [Error] This is my other statement

void logSpace()

Add a break between groups of log statements.  Helpful for readability in longer logs with lots of content.

SightLane.Logging.log('This is my statement','Error');
SightLane.Logging.logSpace();
SightLane.Logging.log('This is my other statement');

Result:  2021-08-02 18:25:30 | This is my statement

            2021-08-02 18:25:30 | This is my other statement

 
void setNeedsReview(boolean needsReview)

Sets the Needs Review flag for an Event.  Allows for notifications, even when there has NOT been an exception.  Warning:  Only relevant IF a logger has already been created

SightLane.Logging.setReviewFlag(true);

Result: (Needs Review field value updated, Result icon changed in interface)

void logException (Exception e)

Formats logging of exception content to include Exception Type, Line Number, and Message

Warning:  Only relevant IF a logger has already been created

SightLane.Logging.logException(e);

Result:  20:24:25 | [SightLane Logger] Type: System.MathException | Line: 18 | Message: Divide by 0


void logPopulatedFields(SObject objRecord)

Adds all populated field values for the supplied instance object to the logs for this Event

Contact myContact = new Contact(FirstName='Lionel',LastName='Messi',email='lm@bestever.com');
SightLane.Logging.logPopulatedFields(myContact);

Result:  2021-08-02 18:25:30 |FirstName - Lionel

            2021-08-02 18:25:30 |LastName - Messi

            2021-08-02 18:25:30 |LastName - lm@bestever.com

 
void logPopulatedFields(List<SObject> objRecordList)

Adds all populated field values for the supplied instance objects to the logs for this Event

Contact myContact = new Contact(FirstName='Lionel',LastName='Messi',email='lm@bestever.com');
Contact myContact2 = new Contact(FirstName='Christiano',LastName='Ronaldo',email='cr@bestever.com');
SightLane.Logging.logPopulatedFields(new List<SObject>{myContact, myContact2});

Result:  2021-08-02 18:25:30 |FirstName - Lionel

            2021-08-02 18:25:30 |LastName - Messi

            2021-08-02 18:25:30 |Email - lm@bestever.com

            2021-08-02 18:25:30 |FirstName - Christiano

            2021-08-02 18:25:30 |LastName - Ronaldo

            2021-08-02 18:25:30 |Email - cr@bestever.com


void logPopulatedFields(SObject objRecord, List<String> fieldNames)

Adds all populated specified field values for the supplied instance object, to the logs for this Event

Contact myContact = new Contact(FirstName='Lionel',LastName='Messi',email='lm@bestever.com');
Contact myContact2 = new Contact(FirstName='Christiano',LastName='Ronaldo',email='cr@bestever.com');
SightLane.Logging.logPopulatedFields(myContact, new List<String>{'LastName','Email'});

Result:  2021-08-02 18:25:30 |LastName - Messi

            2021-08-02 18:25:30 |Email - lm@bestever.com


void logPopulatedFields(List<SObject> objRecordList, List<String> fieldNames)

Adds all populated field values for the supplied instance objects to the logs for this Event

Contact myContact = new Contact(FirstName='Lionel',LastName='Messi',email='lm@bestever.com');
Contact myContact2 = new Contact(FirstName='Christiano',LastName='Ronaldo',email='cr@bestever.com');
SightLane.Logging.logPopulatedFields(new List<SObject>{myContact, myContact2}, new List<String>{'Email'});

Result:  2021-08-02 18:25:30 |Email - lm@bestever.com

            2021-08-02 18:25:30 |Email - cr@bestever.com


EventLogger startLog(String monitorName)

Creates a new Event record instance to which logs can be added

EventLogger el = sightlane.Logging.startLog('My New Monitor');
el.log('This is my statement');

Result:  (A new Event record is created.  A new Monitor record is created, if necessary)

EventLogger startLog(String monitorName, Id primaryRecordId)

Creates a new Event record instance to which logs can be added.  Associate the Event with a particular data record for easier debugging.

Note:  This is not appropriate for All monitors (for example a batch job), but should be used as often as possible to support faster debugging and clear association between logs and data issues.

Contact contact = getMyContact();
EventLogger el = sightlane.Logging.startLog('My New Monitor', contact.Id);
el.log('This is my statement');

Result:  (A new Event record is created, and the Event's Primary Record Id value is set. If necessary, a new Monitor record is created.  )

 

EventLogger getCurrentEventLogger(String newMonitorName)

Attempts to return the closest EventLogger instance in the calling stack (e.g. defined in the calling method). 

Note:  This method is helpful for "adding on" to an existing log with content from a called sub-method.

EventLogger el = sightlane.Logging.getCurrentEventLogger('My New Monitor');
el.log('This is my additional statement');

Result:  (If an existing EventLogger is found, it is returned, and the newMontiorName is ignored.  If no EventLoggers are found, a new EventLogger is returned with the supplied monitor name. )

 

EventLogger getCurrentEventLogger(String newMonitorName, Id newPrimaryRecordId)

Attempts to return the closest EventLogger instance in the calling stack (e.g. defined in the calling method). 

Note:  This method is helpful for "adding on" to an existing log with content from a called sub-method.

EventLogger el = sightlane.Logging.getCurrentEventLogger('My New Monitor', '0010W00002g5ENfQAM');
el.log('This is my additional statement');

Result:  (If an existing EventLogger is found, it is returned, and the supplied newPrimaryRecordId is ignored.  If no EventLoggers are found, a new EventLogger is returned with the supplied monitor name and associated with the supplied primary record. )

 

void reportToSightLane(String monitorName, String logStatement)

Creates a new Event instance and reports it to SightLane in a "One-Liner"

EventLogger el = sightlane.Logging.reportToSightLane('My New Monitor', 'This is a log statement');

Result: 2021-08-02 18:25:30 | This is my statement

 

void reportFailureToSightLane(String monitorName, String logStatement)

Creates a new Event instance and reports it to SightLane in a "One-Liner"

EventLogger el = sightlane.Logging.reportFailureToSightLane('My New Monitor', 'This is a log statement');

Result: (Event is created with a 'Failed' status)

            2021-08-02 18:25:30 | This is my statement

 

void reportFailureToSightLane(String monitorName, String logStatement, Exception e)

Creates a new Event instance and reports it to SightLane in a "One-Liner"

try{
Integer i = 4/0;
} catch (Exception e){
EventLogger el = sightlane.Logging.reportFailureToSightLane('My New Monitor', 'This is a log statement',e);
}

Result: (Event is created with a 'Failed' status and the exception stack trace is recorded)

            2021-08-02 18:25:30 | This is my statement

            [SightLane Logger] Type: System.MathException | Line: 18 | Message: Divide by 0

 

void reportToSightLane(String monitorName, List<String> logStatements)

Creates a new Event instance and reports it to SightLane in a "One-Liner"

Note:  The String list may be defined inline, at the developer's discretion

List<String> logList = new List<String>();
logList.add('This is my statement');
logList.add('This is my other statement');
EventLogger ell = sightlane.Logging.reportToSightLane('My New Monitor', logList);

Result: 2021-08-02 18:25:30 | This is my statement

           2021-08-02 18:25:30 | This is my other statement

void reportFailureToSightLane(String monitorName, List<String> logStatements)

Note:  The String list may be defined inline, at the developer's discretion

List<String> logList = new List<String>();
logList.add('This is my statement');
logList.add('This is my other statement');
EventLogger el = sightlane.Logging.reportFailureToSightLane('My New Monitor', logList);

Result: (Event is created with a 'Failed' status)

           2021-08-02 18:25:30 | This is my statement

           2021-08-02 18:25:30 | This is my other statement

void reportFailureToSightLane(String monitorName, List<String logStatements, Exception e)

Note:  The String list may be defined inline, at the developer's discretion

List<String> logList = new List<String>();
try{
logList.add('This is my statement');
logList.add('This is my other statement');
} catch (Exception e){
EventLogger el = sightlane.Logging.reportFailureToSightLane('My New Monitor', logList, e);
}

Result: (Event is created with a 'Failed' status)

           2021-08-02 18:25:30 | This is my statement

           2021-08-02 18:25:30 | This is my other statement

          [SightLane Logger] Type: System.MathException | Line: 18 | Message: Divide by 0

void reportToSightLane(String monitorName, String logStatement, SObject record)

Creates a new Event instance and reports it to SightLane in a "One-Liner"

Contact con = new Contact(FirstName='Bill', LastName='Johnson');
EventLogger el = sightlane.Logging.reportToSightLane('My New Monitor', 'These are the Contact details', con);

Result: 2021-08-02 18:25:30 | These are the Contact details

           2021-08-02 18:25:30 | FirstName - Bill

           2021-08-02 18:25:30 | LastName - Johnson

 

void reportFailureToSightLane(String monitorName, String logStatement, SObject record)

Creates a new Event instance and reports it to SightLane in a "One-Liner"

Contact con = new Contact(FirstName='Bill', LastName='Johnson');
EventLogger el = sightlane.Logging.reportFailureToSightLane('My New Monitor', 'These are the Contact details', con);

Result: (Event is created with a 'Failed' status)

           2021-08-02 18:25:30 | These are the Contact details

           2021-08-02 18:25:30 | FirstName - Bill

           2021-08-02 18:25:30 | LastName - Johnson

 

void reportFailureToSightLane(String monitorName, String logStatement, Exception e, SObject record)

Creates a new Event instance and reports it to SightLane in a "One-Liner"

try{
Contact con = new Contact(FirstName='Bill', LastName='Johnson');
Integer i = 4/0;
} catch (Exception e){
EventLogger el = sightlane.Logging.reportFailureToSightLane('My New Monitor', 'Error on Contact',e, con);
}

Result: (Event is created with a 'Failed' status and the exception stack trace is recorded)

            2021-08-02 18:25:30 | Error on Contact

            [SightLane Logger] Type: System.MathException | Line: 18 | Message: Divide by 0

           2021-08-02 18:25:30 | FirstName - Bill

           2021-08-02 18:25:30 | LastName - Johnson

 

void reportToSightLane(String monitorName, List<String> logStatements, SObject record)

Creates a new Event instance and reports it to SightLane in a "One-Liner"

Note:  The String list may be defined inline, at the developer's discretion

List<String> logList = new List<String>();
Contact con = new Contact(FirstName='Bill', LastName='Johnson');
logList.add('This is my statement');
logList.add('This is my other statement');
EventLogger ell = sightlane.Logging.reportToSightLane('My New Monitor', logList, con);

Result: 2021-08-02 18:25:30 | This is my statement

           2021-08-02 18:25:30 | This is my other statement

           2021-08-02 18:25:30 | FirstName - Bill

           2021-08-02 18:25:30 | LastName - Johnson

void reportFailureToSightLane(String monitorName, List<String> logStatements, SObject record)

Note:  The String list may be defined inline, at the developer's discretion

List<String> logList = new List<String>();
Contact con = new Contact(FirstName='Bill', LastName='Johnson');
logList.add('This is my statement');
logList.add('This is my other statement');
EventLogger el = sightlane.Logging.reportFailureToSightLane('My New Monitor', logList, con);

Result: (Event is created with a 'Failed' status)

           2021-08-02 18:25:30 | This is my statement

           2021-08-02 18:25:30 | This is my other statement

           2021-08-02 18:25:30 | FirstName - Bill

           2021-08-02 18:25:30 | LastName - Johnson

void reportFailureToSightLane(String monitorName, List<String logStatements, Exception e, SObject record)

Note:  The String list may be defined inline, at the developer's discretion

List<String> logList = new List<String>();
 Contact con = new Contact(FirstName='Bill', LastName='Johnson');
try{
insert con;
logList.add('This is my statement');
logList.add('This is my other statement');
Integer i=4/0;
} catch (Exception e){
EventLogger el = sightlane.Logging.reportFailureToSightLane('My New Monitor', logList, e, con);
}

Result: (Event is created with a 'Failed' status)

           2021-08-02 18:25:30 | This is my statement

           2021-08-02 18:25:30 | This is my other statement

          [SightLane Logger] Type: System.MathException | Line: 18 | Message: Divide by 0

           2021-08-02 18:25:30 | FirstName - Bill

           2021-08-02 18:25:30 | LastName - Johnson

Was this article helpful?
0 out of 0 found this helpful

Comments

0 comments

Please sign in to leave a comment.