2020-07-24 16:45:48 -05:00
|
|
|
import { sendMessage } from "./MessageHandler";
|
2020-05-25 21:30:55 -05:00
|
|
|
import { Diagnostics, MessageTypes } from "../Contracts/ExplorerContracts";
|
|
|
|
import { appInsights } from "../Shared/appInsights";
|
|
|
|
import { SeverityLevel } from "@microsoft/applicationinsights-web";
|
|
|
|
|
|
|
|
// TODO: Move to a separate Diagnostics folder
|
2020-06-23 10:45:51 -05:00
|
|
|
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
|
|
export function logInfo(message: string | Record<string, any>, area: string, code?: number): void {
|
|
|
|
let logMessage: string;
|
|
|
|
if (typeof message === "string") {
|
|
|
|
logMessage = message;
|
|
|
|
} else {
|
|
|
|
logMessage = JSON.stringify(message, Object.getOwnPropertyNames(message));
|
2020-05-25 21:30:55 -05:00
|
|
|
}
|
2020-06-23 10:45:51 -05:00
|
|
|
const entry: Diagnostics.LogEntry = _generateLogEntry(Diagnostics.LogEntryLevel.Verbose, logMessage, area, code);
|
|
|
|
return _logEntry(entry);
|
|
|
|
}
|
2020-05-25 21:30:55 -05:00
|
|
|
|
2020-06-23 10:45:51 -05:00
|
|
|
export function logWarning(message: string, area: string, code?: number): void {
|
|
|
|
const entry: Diagnostics.LogEntry = _generateLogEntry(Diagnostics.LogEntryLevel.Warning, message, area, code);
|
|
|
|
return _logEntry(entry);
|
|
|
|
}
|
2020-05-25 21:30:55 -05:00
|
|
|
|
2020-06-23 10:45:51 -05:00
|
|
|
export function logError(message: string | Error, area: string, code?: number): void {
|
|
|
|
let logMessage: string;
|
|
|
|
if (typeof message === "string") {
|
|
|
|
logMessage = message;
|
|
|
|
} else {
|
|
|
|
logMessage = JSON.stringify(message, Object.getOwnPropertyNames(message));
|
2020-05-25 21:30:55 -05:00
|
|
|
}
|
2020-06-23 10:45:51 -05:00
|
|
|
const entry: Diagnostics.LogEntry = _generateLogEntry(Diagnostics.LogEntryLevel.Error, logMessage, area, code);
|
|
|
|
return _logEntry(entry);
|
|
|
|
}
|
2020-05-25 21:30:55 -05:00
|
|
|
|
2020-06-23 10:45:51 -05:00
|
|
|
function _logEntry(entry: Diagnostics.LogEntry): void {
|
2020-07-24 16:45:48 -05:00
|
|
|
sendMessage({
|
2020-06-23 10:45:51 -05:00
|
|
|
type: MessageTypes.LogInfo,
|
|
|
|
data: JSON.stringify(entry)
|
|
|
|
});
|
2020-05-25 21:30:55 -05:00
|
|
|
|
2020-06-23 10:45:51 -05:00
|
|
|
const severityLevel = ((level: Diagnostics.LogEntryLevel): SeverityLevel => {
|
|
|
|
switch (level) {
|
|
|
|
case Diagnostics.LogEntryLevel.Custom:
|
|
|
|
case Diagnostics.LogEntryLevel.Debug:
|
|
|
|
case Diagnostics.LogEntryLevel.Verbose:
|
|
|
|
return SeverityLevel.Verbose;
|
|
|
|
case Diagnostics.LogEntryLevel.Warning:
|
|
|
|
return SeverityLevel.Warning;
|
|
|
|
case Diagnostics.LogEntryLevel.Error:
|
|
|
|
return SeverityLevel.Error;
|
|
|
|
default:
|
|
|
|
return SeverityLevel.Information;
|
|
|
|
}
|
|
|
|
})(entry.level);
|
|
|
|
appInsights.trackTrace({ message: entry.message, severityLevel }, { area: entry.area });
|
|
|
|
}
|
2020-05-25 21:30:55 -05:00
|
|
|
|
2020-06-23 10:45:51 -05:00
|
|
|
function _generateLogEntry(
|
|
|
|
level: Diagnostics.LogEntryLevel,
|
|
|
|
message: string,
|
|
|
|
area: string,
|
2020-07-06 17:16:24 +02:00
|
|
|
code?: number
|
2020-06-23 10:45:51 -05:00
|
|
|
): Diagnostics.LogEntry {
|
|
|
|
return {
|
|
|
|
timestamp: new Date().getUTCSeconds(),
|
2020-07-06 17:16:24 +02:00
|
|
|
level,
|
|
|
|
message,
|
|
|
|
area,
|
|
|
|
code
|
2020-06-23 10:45:51 -05:00
|
|
|
};
|
2020-05-25 21:30:55 -05:00
|
|
|
}
|