CASH-79 add some info to the global logger to help line up a cloudwatch error with an entry in quantum
96 lines
3.4 KiB
JavaScript
96 lines
3.4 KiB
JavaScript
import { applicationConfig } from "@/constants/application-config.js";
|
|
import axios from "axios";
|
|
import store from "@/store";
|
|
import loggingEndpointMethods from "@/constants/logging-endpoint-methods";
|
|
|
|
import { headerKeys } from "@/constants/header-keys";
|
|
|
|
export class Logger {
|
|
logInformation(message, details) {
|
|
this.writeLogEntry(
|
|
loggingEndpointMethods.LOG_INFORMATION,
|
|
this.formatLogEntry(message, details)
|
|
);
|
|
}
|
|
|
|
logWarning(message, details) {
|
|
this.writeLogEntry(
|
|
loggingEndpointMethods.LOG_WARNING,
|
|
this.formatLogEntry(message, details)
|
|
);
|
|
}
|
|
|
|
logError(message, details) {
|
|
this.writeLogEntry(loggingEndpointMethods.LOG_ERROR, this.formatLogEntry(message, details));
|
|
}
|
|
|
|
logCritical(message, details) {
|
|
this.writeLogEntry(
|
|
loggingEndpointMethods.LOG_CRITICAL,
|
|
this.formatLogEntry(message, details)
|
|
);
|
|
}
|
|
|
|
formatLogEntry(message, details) {
|
|
const refSeqNumber = store.getters.order.referralSequenceNumber ?? "";
|
|
const year = store.getters.vehicle.year ?? "";
|
|
const make = store.getters.vehicle.make ?? "";
|
|
const model = store.getters.vehicle.model ?? "";
|
|
const vehicle = `${year} ${make} ${model}`;
|
|
return `${new Date()} ReferralSequenceNumber: ${refSeqNumber}\nVehicle: ${vehicle}\nApplication: ${applicationConfig.APPLICATION_NAME}\n${message}\n${
|
|
details ? JSON.stringify(details, undefined, 2) : ""
|
|
}`;
|
|
}
|
|
|
|
writeLogEntry(endpoint, logEntry) {
|
|
return new Promise((resolve, reject) => {
|
|
// If running locally or in the Dev environment show the log entries in the console.
|
|
if (
|
|
applicationConfig.CURRENT_ENVIRONMENT === "Localhost" ||
|
|
applicationConfig.CURRENT_ENVIRONMENT === "Dev" ||
|
|
applicationConfig.CURRENT_ENVIRONMENT === "SysTest"
|
|
) {
|
|
switch (endpoint) {
|
|
case loggingEndpointMethods.LOG_INFORMATION:
|
|
console.info(logEntry);
|
|
break;
|
|
case loggingEndpointMethods.LOG_WARNING:
|
|
console.warn(logEntry);
|
|
break;
|
|
case loggingEndpointMethods.LOG_ERROR:
|
|
console.error(logEntry);
|
|
break;
|
|
case loggingEndpointMethods.LOG_CRITICAL:
|
|
console.error(logEntry);
|
|
break;
|
|
default:
|
|
console.log(logEntry);
|
|
}
|
|
}
|
|
|
|
const url =
|
|
applicationConfig.CONSUMER_CF_DISTRO + applicationConfig.FRONTEND_LOGGER_PATH;
|
|
const headers = {
|
|
[headerKeys.EXPERIMENT]: JSON.stringify(store.getters.experimentSettings),
|
|
};
|
|
|
|
axios({
|
|
method: "POST",
|
|
url: `${url}/${endpoint}`,
|
|
data: { entry: logEntry },
|
|
crossDomain: true,
|
|
responseType: {},
|
|
headers: headers,
|
|
}).then(
|
|
(response) => {
|
|
return resolve(response);
|
|
},
|
|
(error) => {
|
|
return reject(error);
|
|
}
|
|
);
|
|
});
|
|
}
|
|
}
|
|
|
|
export default Logger;
|