OTel: support unknown languages (#110905)

This commit is contained in:
Matias Chomicki
2025-09-10 13:31:17 -07:00
committed by GitHub
parent 8dd72408b2
commit de331407fe
2 changed files with 20 additions and 8 deletions
@@ -1,7 +1,7 @@
import { LOG_LINE_BODY_FIELD_NAME } from '../LogDetailsBody';
import { createLogLine } from '../mocks/logRow';
import { getDisplayedFieldsForLogs, getOtelFormattedBody } from './formats';
import { getDisplayedFieldsForLogs, getOtelFormattedBody, OTEL_PROBE_FIELD } from './formats';
describe('getDisplayedFieldsForLogs', () => {
test('Does not return displayed fields if not an OTel log line', () => {
@@ -10,19 +10,30 @@ describe('getDisplayedFieldsForLogs', () => {
expect(getDisplayedFieldsForLogs([log])).toEqual([]);
});
test('Does not return displayed fields if telemetry_sdk_language is empty', () => {
const log = createLogLine({ labels: { severity_number: '1' }, entry: `place="luna" 1ms 3 KB` });
test('Does not return displayed fields if the OTel probe field is not present', () => {
const log = createLogLine({ labels: { severity_level: '1' }, entry: `place="luna" 1ms 3 KB` });
expect(getDisplayedFieldsForLogs([log])).toEqual([]);
});
test('Does not return displayed fields if telemetry_sdk_language is empty', () => {
test('Returns displayed fields if the OTel probe field is present', () => {
const log = createLogLine({
labels: { severity_number: '1', telemetry_sdk_language: 'php', scope_name: 'scope' },
labels: { [OTEL_PROBE_FIELD]: '1', telemetry_sdk_language: 'php', scope_name: 'scope' },
entry: `place="luna" 1ms 3 KB`,
});
expect(getDisplayedFieldsForLogs([log])).toEqual(['scope_name', LOG_LINE_BODY_FIELD_NAME]);
expect(log.otelLanguage).toBe('php');
});
test('Returns displayed fields if the OTel probe field is present and the language unknown', () => {
const log = createLogLine({
labels: { [OTEL_PROBE_FIELD]: '1', scope_name: 'scope' },
entry: `place="luna" 1ms 3 KB`,
});
expect(getDisplayedFieldsForLogs([log])).toEqual(['scope_name', LOG_LINE_BODY_FIELD_NAME]);
expect(log.otelLanguage).toBe('unknown');
});
});
@@ -6,7 +6,8 @@ import { LogListModel } from '../panel/processing';
/**
* The presence of this field along log fields determines OTel origin.
*/
const OTEL_PROBE_FIELD = 'severity_number';
export const OTEL_PROBE_FIELD = 'severity_number';
const OTEL_LANGUAGE_UNKNOWN = 'unknown';
export function identifyOTelLanguages(logs: LogListModel[] | LogRowModel[]): string[] {
const languagesSet = new Set<string>();
logs.forEach((log) => {
@@ -22,8 +23,8 @@ export function identifyOTelLanguage(log: LogListModel | LogRowModel): string |
if ('otelLanguage' in log && log.otelLanguage) {
return log.otelLanguage;
}
return log.labels[OTEL_PROBE_FIELD] !== undefined && log.labels.telemetry_sdk_language
? log.labels.telemetry_sdk_language
return log.labels[OTEL_PROBE_FIELD] !== undefined
? (log.labels.telemetry_sdk_language ?? OTEL_LANGUAGE_UNKNOWN)
: undefined;
}