Skip to content

An attempt at a Salesforce Lightning Platform Logging Service

License

Notifications You must be signed in to change notification settings

Szandor72/logger

Repository files navigation

An attempt at an Apex Logger Service for the Salesforce Lightning Platform

Leverages Platform Events to persist Log information as 'Debug Entries' and uses Custom Metadata Records and Custom Permissions to configure what is logged for whom. Automatically detects current class and method name as well as current line and column. If setup to trace classes only, will save only information from that class and ignore everything else. Triggers logged with a pair of Logger.logTrigger() (see below) will log each operation type seperately. E.g. AFTER_INSERT and BEFORE_INSERT will get two separate Debug Entries. If Log Messages only is activated in Logger Custom Metadata Settings, Platform Events will be instantly sent on Logger.log().

Screenshots

DebugEntry Record View

Developer Console

Live View

Usage Example

/*
*   EXAMPLE CLASS FOR LOGGER
*/

public with sharing class Handler {
    public Handler() {
        Logger.push();
        routine1();
        routine2();
        Logger.pop();
    }

    public void routine1(){
        Logger.push();
        Logger.log('entering subroutine1');
        subroutine1();
        Logger.pop();
    }

    public void routine2(){
        Logger.push();
        subroutine2();
        Logger.pop();
    }

    public void subroutine1(){
        Logger.push();
        Logger.pop();
    }

    public void subroutine2(){
        Logger.push();
        subsub1();
        subsub2();
        Logger.pop();
    }

    public void subsub1(){
        Logger.push();
        Logger.log('doing complex stuff');
        subsub2();
        Logger.pop();
    }

    public void subsub2(){
        Logger.push();
        Logger.log('Doing stuff at stacktrace: ' + Logger.stackTrace);
        Logger.pop();
    }
}

/* Trigger Example */
trigger MocksTrigger on Mock__c (before insert, after insert) {
	Logger.logTrigger();
    MocksService.validate(Trigger.new);
    Logger.logTrigger();
}

Kudos

Dan Appleman, Adrian Larsson, and Robert Sösemann.

About

An attempt at a Salesforce Lightning Platform Logging Service

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published