sfdl
v1.0.6
Published
Salesforce Debu Logs to you it's a cli app that allow user download ApexLogs using token and instanceUrl
Downloads
5
Readme
sfdl
sfdl is a command line interface tool to download, format and extract information from Salesforce Apex Logs. In addition, the compare feature allows to validate key/value records between two Salesforce orgs
Releases
- v1.x.x - This version is focused on troubleshooting analysis, requiring to extract Manage Package logs using Grant Salesforce Support login access where Users don't have credentials (username/password) for authentication. Workaround described bellow.
v.1.0.0: Download, format, transform and extract logs information
v.1.0.4: Comparing org records feature (--compare)
Installation
- Download and Install Node at: https://nodejs.org/
- Validate your version Node using
node -v
- Install the sfdl using NPM
npm install --global sfdl
Configuration
config.json contains the information required for authentication purpose.
{
"authToken": "Bearer 00D2w00000FEDhn\u0021AQwAQDrHuK17Bs.Rh84C5iJHXgHbTC.LuRU381NpUY2t7XVdaTcKBtpxQFaTb3Mtjc76sDlkG649jGEuHZ7AN6OrX8WdFJdw",
"instanceUrl": "{yourinstance}.my.salesforce.com",
"compare": {
"authToken": "Bearer 00D1y0000000Mf4\u0021AQgAQDYJ9hpisnkZvCIRJoxKv4.XPyxCQYz4OxUTVrRZu2s6DEqDuWraGyKbCtALOIE0FcMO1Pxkl9lqFKZZaoQAUpRCW4IJ",
"instanceUrl": "https://{yourinstance}.my.salesforce.com",
"queries": [
{
"vlocity_cmt__TriggerSetup__c": {
"query": "SELECT Name, vlocity_cmt__isTriggerOn__c FROM vlocity_cmt__TriggerSetup__c ORDER BY Name",
"nameFields": "Name",
"valueFields": "vlocity_cmt__IsTriggerOn__c"
}
},
{
"vlocity_cmt__InterfaceImplementationDetail__c": {
"query": "SELECT vlocity_cmt__InterfaceId__r.Name, vlocity_cmt__IsActive__c FROM vlocity_cmt__InterfaceImplementationDetail__c ORDER BY vlocity_cmt__InterfaceId__r.Name",
"nameFields": "vlocity_cmt__InterfaceId__r.Name",
"valueFields": "vlocity_cmt__IsActive__c"
}
}
]
}
}
Notes:
- If this file is not added, each time you execute sfdl the authToken and the instanceUrl will be asked as inputs
- You can add as many query as objects you chan
Execution
Workaround to get the authToken
Execute a query operation to get the cUrl request with the information required:
Create the config.json file in your troubleshooting folder using the information from cUrl request:
If you copy/paste the cUrl request in the config file as the image above, delete the cUrl request information and save the file with the proper JSON format
Run sfdl
Execute
sfdl
in your troubleshooting directory where you configured the config.json fileA new folder called ApexLogs will be created with all the existing logs in the org***
*** Check the options bellow to filter the logs to download using queryWhere
By default the information retrieved comes from SELECT Id FROM ApexLog
Additional Command Line Options
The options using --optionName
are:
| Option Name |Description |Example |Default value |
|----------------|-------------------------------|-----------------------|---------|
|methodHierarchy OR -m|Nests information between METHOD_ENTRY with its METHOD_EXIT as well as CODE_UNIT_STARTED and CODE_UNIT_FINISHED
| sfdl --methodHierarchy OR sfdl --format |
| queryWhere OR -q |Allows you to enter a SOQL statements after the FROM ApexLog
|WHERE Operation != '<empty'> ORDER BY LastModifiedDate DESC|
|folderName OR -n |Allows you to enter the name of the folder where the logs will be saved
|NewLogs2022 | ApexLog
| debug OR -d| It will turn on logs from the module
|
|createDraftConfig|It will create config.json file|{ "authToken":"", "instanceUrl": ""}|
|clearFinest OR -c|It will remove all lines that contains HEAP_ALLOCATE and STATEMENT_EXECUTE||
|format OR -f|It will display 3 options: 1) One file: Extract all query lines, 2) One file: Clear out HEAP_ALLOCATE and STATEMENT_EXECUTE, 3) All files in a folder: Clear out HEAP_ALLOCATE and STATEMENT_EXECUTE ||
|help|Additional information related to sfdl cli app||
|version OR -v|current version sfdl installed in your system||
|compare|It will use all the information from config to query and compare orgs records looking for differences and creating a file with them if exist||