mirror of
https://github.com/misskey-dev/misskey.git
synced 2026-08-17 15:08:31 +00:00
enhance: OTel設定時、JSONログにtrace_id, span_id, trace_flagがつくように (#17748)
* enhance: OTel設定時、JSONログにtrace_id, span_id, trace_flagがつくように * fix
This commit is contained in:
@@ -62,6 +62,23 @@ describe('JsonConsoleBackend', () => {
|
||||
});
|
||||
});
|
||||
|
||||
test('writes trace context using the standard JSON field names', () => {
|
||||
const output = vi.fn<(line: string) => void>();
|
||||
const backend = new JsonConsoleBackend({ output });
|
||||
|
||||
backend.write(createRecord({
|
||||
traceId: '0123456789abcdef0123456789abcdef',
|
||||
spanId: '0123456789abcdef',
|
||||
traceFlags: 0,
|
||||
}));
|
||||
|
||||
expect(JSON.parse(output.mock.calls[0][0])).toMatchObject({
|
||||
trace_id: '0123456789abcdef0123456789abcdef',
|
||||
span_id: '0123456789abcdef',
|
||||
trace_flags: 0,
|
||||
});
|
||||
});
|
||||
|
||||
test('escapes newlines so each record remains one physical line', () => {
|
||||
const output = vi.fn<(line: string) => void>();
|
||||
const backend = new JsonConsoleBackend({ output });
|
||||
|
||||
@@ -5,7 +5,7 @@
|
||||
|
||||
import { describe, expect, test, vi } from 'vitest';
|
||||
import type { LogBackend } from '@/logging/LogBackend.js';
|
||||
import type { LogRecordInput } from '@/logging/types.js';
|
||||
import type { LogRecordInput, LogTraceContext } from '@/logging/types.js';
|
||||
import { LogManager } from '@/logging/LogManager.js';
|
||||
|
||||
/** テストで使う最小構成のログ入力を作成します。 */
|
||||
@@ -87,6 +87,39 @@ describe('LogManager', () => {
|
||||
});
|
||||
});
|
||||
|
||||
test('adds active trace context to the record after filtering', () => {
|
||||
const { manager, write } = createManager();
|
||||
const traceContext: LogTraceContext = {
|
||||
traceId: '0123456789abcdef0123456789abcdef',
|
||||
spanId: '0123456789abcdef',
|
||||
traceFlags: 0,
|
||||
};
|
||||
const provider = vi.fn(() => traceContext);
|
||||
manager.setTraceContextProvider(provider);
|
||||
|
||||
manager.write(createInput());
|
||||
|
||||
expect(provider).toHaveBeenCalledOnce();
|
||||
expect(write.mock.calls[0][0]).toMatchObject(traceContext);
|
||||
});
|
||||
|
||||
test('does not get trace context for logs that will not be written', () => {
|
||||
const provider = vi.fn(() => ({
|
||||
traceId: '0123456789abcdef0123456789abcdef',
|
||||
spanId: '0123456789abcdef',
|
||||
traceFlags: 1,
|
||||
}));
|
||||
const filtered = createManager({ configuration: { level: 'warn' } });
|
||||
filtered.manager.setTraceContextProvider(provider);
|
||||
filtered.manager.write(createInput('info'));
|
||||
|
||||
const quiet = createManager({ quiet: true });
|
||||
quiet.manager.setTraceContextProvider(provider);
|
||||
quiet.manager.write(createInput('error'));
|
||||
|
||||
expect(provider).not.toHaveBeenCalled();
|
||||
});
|
||||
|
||||
test('does not call the backend in quiet mode', () => {
|
||||
const { manager, write } = createManager({ quiet: true, verbose: true });
|
||||
|
||||
|
||||
Reference in New Issue
Block a user