tests/worker-logger.test.ts
此代码来自构建时的仓库快照。修改源码后重新构建即可更新。
import { afterEach, describe, expect, it, vi } from 'vitest';
import { createWorkerLogger } from '@/server/jobs/logger';
afterEach(() => vi.unstubAllEnvs());
describe('Worker 结构化日志', () => {
it('保留任务定位信息并隐藏凭据', () => {
vi.stubEnv('LOG_LEVEL', 'info');
const lines: string[] = [];
const logger = createWorkerLogger({
write: (line) => {
lines.push(line);
},
});
logger.info(
{
event: 'task.started',
taskId: 'test-id',
run: 2,
password: 'private-value',
headers: { cookie: 'session-value' },
DATABASE_URL: 'private-db',
},
'开始执行任务',
);
const record = JSON.parse(lines[0]);
expect(record).toMatchObject({
event: 'task.started',
taskId: 'test-id',
run: 2,
service: 'teamdesk-worker',
password: '[已隐藏]',
});
expect(lines[0]).not.toContain('private-value');
expect(lines[0]).not.toContain('session-value');
expect(lines[0]).not.toContain('private-db');
});
it('日志级别过滤调试信息,拒绝无效配置', () => {
vi.stubEnv('LOG_LEVEL', 'warn');
const lines: string[] = [];
const logger = createWorkerLogger({
write: (line) => {
lines.push(line);
},
});
logger.info('不会输出');
logger.warn('需要输出');
expect(lines).toHaveLength(1);
vi.stubEnv('LOG_LEVEL', 'invalid');
expect(() => createWorkerLogger()).toThrow('LOG_LEVEL 配置无效');
});
});