UNPKG

@axiomhq/logging

Version:
86 lines (85 loc) 2.37 kB
var __defProp = Object.defineProperty; var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value; var __publicField = (obj, key, value) => { __defNormalProp(obj, typeof key !== "symbol" ? key + "" : key, value); return value; }; 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 { constructor(config) { __publicField(this, "config"); __publicField(this, "log", (logs) => { logs.forEach((log) => { if (LogLevelValue[log.level ?? LogLevel.info] >= LogLevelValue[this.config.logLevel ?? LogLevel.info]) { this.prettyPrint(log); } }); }); this.config = { ...config }; } 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