env-var-parser.ts 862 B

123456789101112131415161718192021222324252627282930313233
  1. import type { LoggerConfig } from './types';
  2. const LEVEL_ENV_VARS: ReadonlyArray<[string, string]> = [
  3. ['DEBUG', 'debug'],
  4. ['TRACE', 'trace'],
  5. ['INFO', 'info'],
  6. ['WARN', 'warn'],
  7. ['ERROR', 'error'],
  8. ['FATAL', 'fatal'],
  9. ];
  10. /**
  11. * Parse log-level environment variables into a namespace-to-level map.
  12. * Reads: DEBUG, TRACE, INFO, WARN, ERROR, FATAL from process.env.
  13. * Later entries in the list override earlier ones for the same namespace.
  14. */
  15. export function parseEnvLevels(): Omit<LoggerConfig, 'default'> {
  16. const result: Record<string, string> = {};
  17. for (const [envVar, level] of LEVEL_ENV_VARS) {
  18. const value = process.env[envVar];
  19. if (!value) continue;
  20. for (const pattern of value.split(',')) {
  21. const trimmed = pattern.trim();
  22. if (trimmed) {
  23. result[trimmed] = level;
  24. }
  25. }
  26. }
  27. return result;
  28. }