UNPKG

@axiomhq/logging

Version:
80 lines (79 loc) 1.98 kB
import { LogLevelValue, LogLevel } from "../logger.js"; import { isBrowser } from "../runtime.js"; const levelColors = { info: { terminal: "32", browser: "lightgreen" }, debug: { terminal: "36", browser: "lightblue" }, warn: { terminal: "33", browser: "yellow" }, error: { terminal: "31", browser: "red" } }; class ConsoleTransport { config; constructor(config) { this.config = { ...config }; } log = (logs) => { logs.forEach((log) => { if (LogLevelValue[log.level ?? LogLevel.info] >= LogLevelValue[this.config.logLevel ?? LogLevel.info]) { this.prettyPrint(log); } }); }; isStandardLogEvent(log) { return typeof log === "object" && log !== null && "level" in log && "message" in log && "fields" in log; } prettyPrint(ev) { const hasFields = ev.fields && Object.keys(ev.fields).length > 0; if (!this.config.prettyPrint) { if (!this.isStandardLogEvent(ev)) { console.log(ev); return; } let msg = `${ev.level} - ${ev.message}`; if (hasFields) { msg += " " + JSON.stringify(ev.fields); } console.log(msg); return; } if (!this.isStandardLogEvent(ev)) { if (isBrowser) { console.log("%c%s", `color: ${levelColors[LogLevel.info].browser};`, ev); } else { console.log(`\x1B[${levelColors[LogLevel.info].terminal}m%s\x1B[0m`, ev); } return; } let msgString = ""; let args = [ev.level, ev.message]; if (isBrowser) { msgString = "%c%s - %s"; args = [`color: ${levelColors[ev.level].browser};`, ...args]; } else { msgString = `\x1B[${levelColors[ev.level].terminal}m%s\x1B[0m - %s`; } if (hasFields) { msgString += " %o"; args.push(ev.fields); } console.log.apply(console, [msgString, ...args]); } flush() { return; } } export { ConsoleTransport }; //# sourceMappingURL=console.js.map