UNPKG

astro

Version:

Astro is a modern site builder with web best practices, performance, and DX front-of-mind.

30 lines (29 loc) • 915 B
import { AstroLogger, levels } from "../core.js"; import { matchesLevel } from "../public.js"; export const SGR_REGEX = new RegExp(`${String.fromCharCode(27)}\\[[0-9;]*m`, "g"); export default function jsonLoggerDestination(config = {}) { const { pretty = false, level = "info" } = config; return { write(event) { if (!matchesLevel(event.level, level)) { return; } const dest = levels[event.level] >= levels["error"] ? console.error : console.info; const message = event.message.replace(SGR_REGEX, ""); const payload = pretty ? JSON.stringify({ message, label: event.label, level: event.level }, null, 2) : JSON.stringify({ message, label: event.label, level: event.level }); dest(payload); } }; } export function createJsonLoggerFromFlags(config) { return new AstroLogger({ destination: jsonLoggerDestination({ pretty: false }), level: config.logLevel ?? "info" }); }