2024-03-07 12:25:00 +05:30
|
|
|
import { ILog } from 'types/api/logs/log';
|
|
|
|
|
|
|
|
|
|
import { LogType, SEVERITY_TEXT_TYPE } from './LogStateIndicator';
|
|
|
|
|
|
2024-08-01 12:06:29 +05:30
|
|
|
const getLogTypeBySeverityText = (severityText: string): string => {
|
2024-03-07 12:25:00 +05:30
|
|
|
switch (severityText) {
|
|
|
|
|
case SEVERITY_TEXT_TYPE.TRACE:
|
|
|
|
|
case SEVERITY_TEXT_TYPE.TRACE2:
|
|
|
|
|
case SEVERITY_TEXT_TYPE.TRACE3:
|
|
|
|
|
case SEVERITY_TEXT_TYPE.TRACE4:
|
2024-08-01 12:06:29 +05:30
|
|
|
return LogType.TRACE;
|
2024-03-07 12:25:00 +05:30
|
|
|
case SEVERITY_TEXT_TYPE.DEBUG:
|
|
|
|
|
case SEVERITY_TEXT_TYPE.DEBUG2:
|
|
|
|
|
case SEVERITY_TEXT_TYPE.DEBUG3:
|
|
|
|
|
case SEVERITY_TEXT_TYPE.DEBUG4:
|
2024-08-01 12:06:29 +05:30
|
|
|
return LogType.DEBUG;
|
2024-03-07 12:25:00 +05:30
|
|
|
case SEVERITY_TEXT_TYPE.INFO:
|
|
|
|
|
case SEVERITY_TEXT_TYPE.INFO2:
|
|
|
|
|
case SEVERITY_TEXT_TYPE.INFO3:
|
|
|
|
|
case SEVERITY_TEXT_TYPE.INFO4:
|
2024-08-01 12:06:29 +05:30
|
|
|
return LogType.INFO;
|
2024-03-07 12:25:00 +05:30
|
|
|
case SEVERITY_TEXT_TYPE.WARN:
|
|
|
|
|
case SEVERITY_TEXT_TYPE.WARN2:
|
|
|
|
|
case SEVERITY_TEXT_TYPE.WARN3:
|
|
|
|
|
case SEVERITY_TEXT_TYPE.WARN4:
|
|
|
|
|
case SEVERITY_TEXT_TYPE.WARNING:
|
2024-08-01 12:06:29 +05:30
|
|
|
return LogType.WARN;
|
2024-03-07 12:25:00 +05:30
|
|
|
case SEVERITY_TEXT_TYPE.ERROR:
|
|
|
|
|
case SEVERITY_TEXT_TYPE.ERROR2:
|
|
|
|
|
case SEVERITY_TEXT_TYPE.ERROR3:
|
|
|
|
|
case SEVERITY_TEXT_TYPE.ERROR4:
|
2024-08-01 12:06:29 +05:30
|
|
|
return LogType.ERROR;
|
2024-03-07 12:25:00 +05:30
|
|
|
case SEVERITY_TEXT_TYPE.FATAL:
|
|
|
|
|
case SEVERITY_TEXT_TYPE.FATAL2:
|
|
|
|
|
case SEVERITY_TEXT_TYPE.FATAL3:
|
|
|
|
|
case SEVERITY_TEXT_TYPE.FATAL4:
|
2024-08-01 12:06:29 +05:30
|
|
|
return LogType.FATAL;
|
2024-03-07 12:25:00 +05:30
|
|
|
default:
|
2024-08-01 12:06:29 +05:30
|
|
|
return LogType.UNKNOWN;
|
2024-03-07 12:25:00 +05:30
|
|
|
}
|
|
|
|
|
};
|
|
|
|
|
|
2024-08-01 12:06:29 +05:30
|
|
|
// https://opentelemetry.io/docs/specs/otel/logs/data-model/#field-severitynumber
|
2025-09-10 10:51:06 +05:30
|
|
|
export const getLogTypeBySeverityNumber = (severityNumber: number): string => {
|
2024-08-01 12:06:29 +05:30
|
|
|
if (severityNumber < 1) {
|
|
|
|
|
return LogType.UNKNOWN;
|
|
|
|
|
}
|
|
|
|
|
if (severityNumber < 5) {
|
|
|
|
|
return LogType.TRACE;
|
|
|
|
|
}
|
|
|
|
|
if (severityNumber < 9) {
|
|
|
|
|
return LogType.DEBUG;
|
|
|
|
|
}
|
|
|
|
|
if (severityNumber < 13) {
|
|
|
|
|
return LogType.INFO;
|
|
|
|
|
}
|
|
|
|
|
if (severityNumber < 17) {
|
|
|
|
|
return LogType.WARN;
|
|
|
|
|
}
|
|
|
|
|
if (severityNumber < 21) {
|
|
|
|
|
return LogType.ERROR;
|
|
|
|
|
}
|
|
|
|
|
if (severityNumber < 25) {
|
|
|
|
|
return LogType.FATAL;
|
|
|
|
|
}
|
|
|
|
|
return LogType.UNKNOWN;
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
const getLogType = (
|
|
|
|
|
severityText: string,
|
|
|
|
|
severityNumber: number,
|
|
|
|
|
defaultType: string,
|
|
|
|
|
): string => {
|
|
|
|
|
// give priority to the severityNumber
|
|
|
|
|
if (severityNumber) {
|
|
|
|
|
const logType = getLogTypeBySeverityNumber(severityNumber);
|
|
|
|
|
if (logType !== LogType.UNKNOWN) {
|
|
|
|
|
return logType;
|
|
|
|
|
}
|
2024-03-07 12:25:00 +05:30
|
|
|
}
|
2024-08-01 12:06:29 +05:30
|
|
|
|
|
|
|
|
// is severityNumber is not present then rely on the severityText
|
|
|
|
|
if (severityText) {
|
|
|
|
|
const logType = getLogTypeBySeverityText(severityText);
|
|
|
|
|
if (logType !== LogType.UNKNOWN) {
|
|
|
|
|
return logType;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
return defaultType;
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
export const getLogIndicatorType = (logData: ILog): string => {
|
|
|
|
|
const defaultType = logData.attributes_string?.log_level || LogType.INFO;
|
|
|
|
|
// convert the severity_text to upper case for the comparison to support case insensitive values
|
|
|
|
|
return getLogType(
|
|
|
|
|
logData?.severity_text?.toUpperCase(),
|
|
|
|
|
logData?.severity_number || 0,
|
|
|
|
|
defaultType,
|
|
|
|
|
);
|
2024-03-07 12:25:00 +05:30
|
|
|
};
|
|
|
|
|
|
|
|
|
|
export const getLogIndicatorTypeForTable = (
|
|
|
|
|
log: Record<string, unknown>,
|
|
|
|
|
): string => {
|
2024-08-01 12:06:29 +05:30
|
|
|
const defaultType = (log.log_level as string) || LogType.INFO;
|
|
|
|
|
// convert the severity_text to upper case for the comparison to support case insensitive values
|
|
|
|
|
return getLogType(
|
|
|
|
|
(log?.severity_text as string)?.toUpperCase(),
|
|
|
|
|
(log?.severity_number as number) || 0,
|
|
|
|
|
defaultType,
|
|
|
|
|
);
|
2024-03-07 12:25:00 +05:30
|
|
|
};
|