@@ -18,6 +18,7 @@ Messages.importMessagesDirectoryFromMetaUrl(import.meta.url);
1818const messages = Messages . loadMessages ( '@salesforce/plugin-apex' , 'list' ) ;
1919
2020export type LogListResult = LogRecord [ ] ;
21+ type LogForTable = Omit < LogRecord , 'DurationMilliseconds' | 'User' > & { DurationMilliseconds : string ; User : string } ;
2122
2223export default class Log extends SfCommand < LogListResult > {
2324 public static readonly summary = messages . getMessage ( 'summary' ) ;
@@ -35,61 +36,45 @@ export default class Log extends SfCommand<LogListResult> {
3536 public async run ( ) : Promise < LogListResult > {
3637 const { flags } = await this . parse ( Log ) ;
3738
38- const conn = flags [ 'target-org' ] . getConnection ( flags [ 'api-version' ] ) ;
39- const logService = new LogService ( conn ) ;
40- const logRecords = await logService . getLogRecords ( ) ;
39+ const logService = new LogService ( flags [ 'target-org' ] . getConnection ( flags [ 'api-version' ] ) ) ;
40+ const logRecords = ( await logService . getLogRecords ( ) ) . map ( formatStartTime ) ;
4141
4242 if ( logRecords . length === 0 ) {
4343 this . log ( messages . getMessage ( 'noDebugLogsFound' ) ) ;
4444 return [ ] ;
4545 }
4646
47- logRecords . map ( ( logRecord ) => {
48- logRecord . StartTime = this . formatTime ( logRecord . StartTime ) ;
49- } ) ;
50-
5147 if ( ! flags . json ) {
5248 // while not required to prevent table output, save a few iterations if only printing json
53- const cleanLogs = logRecords . map ( ( logRecord ) => ( {
54- app : logRecord . Application ,
55- duration : String ( logRecord . DurationMilliseconds ) ,
56- id : logRecord . Id ,
57- location : logRecord . Location ,
58- size : String ( logRecord . LogLength ) ,
59- user : logRecord . LogUser . Name ,
60- operation : logRecord . Operation ,
61- request : logRecord . Request ,
62- time : logRecord . StartTime ,
63- status : logRecord . Status ,
64- } ) ) ;
65-
66- this . table (
67- cleanLogs ,
68- {
69- app : { header : messages . getMessage ( 'appColHeader' ) } ,
70- duration : { header : messages . getMessage ( 'durationColHeader' ) } ,
71- id : { header : messages . getMessage ( 'idColHeader' ) } ,
72- location : { header : messages . getMessage ( 'locationColHeader' ) } ,
73- size : { header : messages . getMessage ( 'sizeColHeader' ) } ,
74- user : { header : messages . getMessage ( 'userColHeader' ) } ,
75- operation : { header : messages . getMessage ( 'operationColHeader' ) } ,
76- request : { header : messages . getMessage ( 'requestColHeader' ) } ,
77- time : { header : messages . getMessage ( 'timeColHeader' ) } ,
78- status : { header : messages . getMessage ( 'statusColHeader' ) } ,
79- } ,
80- { 'no-truncate' : true }
81- ) ;
49+ this . table ( logRecords . map ( formatForTable ) , tableHeaders , { 'no-truncate' : true } ) ;
8250 }
8351
8452 return logRecords ;
8553 }
86-
87- // eslint-disable-next-line class-methods-use-this
88- private formatTime ( time : string ) : string {
89- const milliIndex = time . indexOf ( '.' ) ;
90- if ( milliIndex !== - 1 ) {
91- return time . substring ( 0 , milliIndex ) + time . substring ( milliIndex + 4 ) ;
92- }
93- return time ;
94- }
9554}
55+
56+ const formatForTable = ( logRecord : LogRecord ) : LogForTable => ( {
57+ ...logRecord ,
58+ DurationMilliseconds : String ( logRecord . DurationMilliseconds ) ,
59+ User : logRecord . LogUser . Name ,
60+ } ) ;
61+
62+ export const formatStartTime = ( lr : LogRecord ) : LogRecord => ( { ...lr , StartTime : formatTime ( lr . StartTime ) } ) ;
63+
64+ const formatTime = ( time : string ) : string => {
65+ const msIndex = time . indexOf ( '.' ) ;
66+ return msIndex !== - 1 ? time . substring ( 0 , msIndex ) + time . substring ( msIndex + 4 ) : time ;
67+ } ;
68+
69+ const tableHeaders = {
70+ Application : { header : 'Application' } ,
71+ DurationMilliseconds : { header : 'Duration (ms)' } ,
72+ Id : { header : 'Id' } ,
73+ Location : { header : 'Location' } ,
74+ LogLength : { header : 'Size (B)' } ,
75+ User : { header : 'Log User' } ,
76+ Operation : { header : 'Operation' } ,
77+ Request : { header : 'Request' } ,
78+ StartTime : { header : 'Start Time' } ,
79+ Status : { header : 'Status' } ,
80+ } ;
0 commit comments