diff --git a/src/helpers/logger.js b/src/helpers/logger.js index 620f3bd0..e583f7c1 100644 --- a/src/helpers/logger.js +++ b/src/helpers/logger.js @@ -33,30 +33,41 @@ export class Logger { formatLogEntry(message, details) { let json = ''; - if (details) { - if (details instanceof Error) { - json = JSON.stringify(details, Object.getOwnPropertyNames(details), 2); - } else { - json = JSON.stringify(details, undefined, 2) + const store = useMainStore(); + const sessionKey = getSessionKeyValue(); + + try + { + if (details) { + if (details instanceof Error) { + json = JSON.stringify(details, Object.getOwnPropertyNames(details), 2); + } else { + json = JSON.stringify(details, undefined, 2) + } } + } catch (error) { + json = `Failed to serialize log details: ${error}`; } - return `Application: ${applicationConfig.APPLICATION_NAME} \n${message} \n${json}`; + return [ + `Application: ${applicationConfig.APPLICATION_NAME}`, + `ClientTag: ${store.issConfig?.clientTag}`, + `ParentAccountNumber: ${store.issConfig?.parentAccountNumber}`, + `ClientName: ${store.issConfig?.clientName}`, + `LastPageVisited: ${store.applicationUser?.lastPageVisited}`, + `SessionLogSequenceNumber: ${sessionKey}`, + `ReferralSequenceNumber: ${store.order?.referralSequenceNumber}`, + `ReferralNumber: ${store.order?.referralNumber}`, + `EON: ${store.order?.eon}`, + `Message: ${message}`, + `JSON: ${json}` + ].join('\n'); } writeLogEntry(endpoint, logEntry) { const store = useMainStore(); const sessionKey = getSessionKeyValue(); - // TODO: Work in progress. -/* - if ( store.applicationUser.logErrorCalls> 10 ) { - console.error("Exceeded maximum log error calls for this session. Further logging will be suppressed to prevent potential infinite loops."); - return; - } - - store.applicationUser.logErrorCalls += 1; -*/ return new Promise((resolve, reject) => { // If running locally or in the Dev environment show the log entries in the console. if ( diff --git a/src/layouts/bailout-page/bailout-page.vue b/src/layouts/bailout-page/bailout-page.vue index dbd250d4..8e7fa5dd 100644 --- a/src/layouts/bailout-page/bailout-page.vue +++ b/src/layouts/bailout-page/bailout-page.vue @@ -116,13 +116,20 @@ export default { mixins: [BaseFormMixin, analyticsMixIn], async beforeRouteEnter(to, from, next) { const fromPage = from?.query?.issPage || 'external'; + // Only log bailout event if user is coming from a different page. // This ensures that we cannot get stuck in a loop, if the bailout-page ever bails out. if (fromPage !== issPageValues.BAILOUT_PAGE) { - const bailoutCode = useMainStore().pageData(issPageValues.BAILOUT_PAGE).bailoutCode; + const bailoutPageData = useMainStore().pageData(issPageValues.BAILOUT_PAGE); + const bailoutCode = bailoutPageData.bailoutCode; const bailoutString = Object.keys(BailoutCode).find(key => BailoutCode[key] === bailoutCode); + + // Log Bailout info to the error log for quick searching. + global.$logger.logError(`Bailout - Page: ${fromPage} - BailoutCode: ${bailoutCode} - BailoutString: ${bailoutString}`, bailoutPageData); + + // Log a couple main bailout items to GA and session log events. analyticsMixIn.methods.pushEventToGA(GaCategories.BAILOUT, bailoutString, fromPage, true, null, null); - } + } // Call APIs const cmsContentPromise = fetchCmsContentForPage(to.query.issPage); diff --git a/src/store/index.js b/src/store/index.js index b23f4d47..6b6cd308 100644 --- a/src/store/index.js +++ b/src/store/index.js @@ -245,7 +245,6 @@ export const getDefaultState = () => ({ duplicateOrders: [], hasSentSaveQuoteEmail: null, coverageLookupAttempts: 0, - //logErrorCalls: 0, firstHit: true }, issConfig: {