Refined event logic to prevent multiple error messages from being displayed. Imlemented GetStackTrace service in Error_Services so that the stack contents can be logged with the RDS Layer error log.

This commit is contained in:
Infineon\StieberD
2025-03-21 13:54:43 -07:00
committed by Stieber Daniel (CSC FI SPS MESLEO)
parent 651b7ab420
commit f930fd3efe
6 changed files with 543 additions and 1079 deletions

View File

@ -27,30 +27,47 @@ Common /ErrorServices/ ErrorMessages@, ErrorSources@, ErrorCodes@, RetStacks@, E
Equ CRLF$ to \0D0A\
Declare function Environment_Services, Logging_Services, GetSessionCallStack, Error_Services, RetStack
Declare subroutine Logging_Services, Get_Status, Set_Env
Declare subroutine Logging_Services, Get_Status, Set_Env, GetTempPath
Main:
ErrorMessages = Error_Services('GetMessages')
LogPath = Environment_Services('GetApplicationRootPath') : '\LogFiles\StackTrace'
LogDate = Oconv(Date(), 'D4/')
LogTime = Oconv(Time(), 'MTS')
LogFileName = LogDate[7, 4] : '-' : LogDate[1, 2] : '-' : LogDate[4, 2] : ' Error Log.csv'
objLog = Logging_Services('NewLog', LogPath, LogFileName, CRLF$, ',', '', '', False$, False$)
LogData = ''
LogData<1> = CRLF$:'Timestamp: ':LogDate:' ':LogTime
LogData<2> = 'Machine: ':Environment_Services('GetServer')
LogData<3> = 'Set_Status Code:':EsSpStatCode@
LogData<4> = 'Set_Status Message:':EsSpStatMessage@
ErrorMessages = Error_Services('GetMessages')
LogPath = Environment_Services('GetApplicationRootPath') : '\LogFiles\StackTrace'
LogDate = Oconv(Date(), 'D4/')
LogTime = Oconv(Time(), 'MTS')
LogFileName = LogDate[7, 4] : '-' : LogDate[1, 2] : '-' : LogDate[4, 2] : ' Error Log.csv'
objLog = Logging_Services('NewLog', LogPath, LogFileName, CRLF$, ',', '', '', False$, False$)
TempLogFileName = 'OIStackLog.csv'
TempDirectory = Str(\00\, 1024)
GetTempPath(Len(TempDirectory), TempDirectory)
Convert \00\ to '' in TempDirectory
TempLogPath = TempDirectory
objTempLog = Logging_Services('NewLog', TempLogPath, TempLogFileName, CRLF$, ',', '', '', False$, True$)
LogData = ''
LogData<1> = CRLF$:'Timestamp: ':LogDate:' ':LogTime
LogData<2> = 'Machine: ':Environment_Services('GetServer')
LogData<3> = 'Set_Status Code:':EsSpStatCode@
LogData<4> = 'Set_Status Message:':EsSpStatMessage@
Swap @FM with @VM in ErrorMessages
LogData<5> = 'Error_Services Messages:':ErrorMessages
LogData<6> = 'Call Depth: ':CallDepth@
LogData<7> = 'Curr Program and line no: ':CallStack@<2,1>:@VM:CallStack@<2,2>
LogData<8> = 'Call Stack / Line Nos: '
Stack = CallStack@
Stack = Delete(Stack, 1, 0, 0)
LogData<9> = Stack:CRLF$
LogData<5> = 'Error_Services Messages:':ErrorMessages
LogData<6> = 'Call Depth: ':CallDepth@
Stack = CallStack@
Begin Case
Case ( (CallStack@<1,1> EQ 'ERROR_SERVICES') and (CallStack@<2,1> EQ 'ERROR_SERVICES') )
LogData<7> = 'Curr Program and line no: ':CallStack@<3,1>:@VM:CallStack@<3,2>
Stack = Delete(Stack, 1, 0, 0)
Stack = Delete(Stack, 1, 0, 0)
Case (CallStack@<1,1> EQ 'ERROR_SERVICES')
LogData<7> = 'Curr Program and line no: ':CallStack@<2,1>:@VM:CallStack@<2,2>
Stack = Delete(Stack, 1, 0, 0)
Case Otherwise$
LogData<7> = 'Curr Program and line no: ':CallStack@<1,1>:@VM:CallStack@<1,2>
End Case
LogData<8> = 'Call Stack / Line Nos: '
Convert \00\ to '' in Stack
LogData<9> = Stack:CRLF$
Logging_Services('AppendLog', objLog, LogData, @FM, @VM, '', '', '')
Logging_Services('AppendLog', objTempLog, LogData, @FM, @VM, '', '', '')
Return