// services/api/src/shared/log-level.ts —— LOG_LEVEL 启动期校验(Task 7 遗留项⑤)。 // 此前非法 LOG_LEVEL 由 pino 在首次写日志时才隐式抛错(或更糟:被当成自定义 // level 静默吞掉全部输出)。改为模块装配(LoggerModule.forRoot 前)即快速失败, // 错误信息列出全部合法值。合法值即 pino 内建 level 集合(pino.Level 类型)。 import type { Level } from 'pino'; export const VALID_LOG_LEVELS: readonly Level[] = [ 'fatal', 'error', 'warn', 'info', 'debug', 'trace', ]; /** * 解析进程环境 LOG_LEVEL:缺省 'info';非法值抛错(调用点在模块装配期, * 即应用启动即失败,不带半残日志配置上线)。 */ export function resolveLogLevel(raw: string | undefined): Level { const level = raw ?? 'info'; if (!VALID_LOG_LEVELS.includes(level as Level)) { throw new Error( `Invalid LOG_LEVEL "${level}". Valid levels: ${VALID_LOG_LEVELS.join(', ')} ` + '(see .env.example).', ); } return level as Level; }