74 lines
2.2 KiB
JavaScript
74 lines
2.2 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) {
|
|
return `Application: ${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"
|
|
) {
|
|
console.log(logEntry);
|
|
}
|
|
|
|
const url = applicationConfig.FRONTEND_LOGGER_URL;
|
|
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;
|