From 61950198e3bf06555f48e8f51c882a4c3cce5128 Mon Sep 17 00:00:00 2001 From: metamuffin Date: Wed, 7 Sep 2022 11:14:42 +0200 Subject: REFACTOR! pt.1 --- client-web/source/logger.ts | 50 +++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 50 insertions(+) create mode 100644 client-web/source/logger.ts (limited to 'client-web/source/logger.ts') diff --git a/client-web/source/logger.ts b/client-web/source/logger.ts new file mode 100644 index 0000000..e00b1d0 --- /dev/null +++ b/client-web/source/logger.ts @@ -0,0 +1,50 @@ +/// + +const log_tag_color = { + "*": "#FF4444", + webrtc: "#FF44FF", + media: "#FFFF44", + ws: "#44FFFF", + rnnoise: "#2222FF", + usermodel: "#44FF44", + error: "#FF0000", +} +export type LogTag = keyof typeof log_tag_color + +let logger_container: HTMLDivElement + +// TODO maybe log time aswell +// deno-lint-ignore no-explicit-any +export function log(tag: LogTag, message: string, ...data: any[]) { + for (let i = 0; i < data.length; i++) { + const e = data[i]; + if (e instanceof MediaStreamTrack) data[i] = `(${e.kind}) ${e.id}` + } + console.log(`%c[${tag}] ${message}`, "color:" + log_tag_color[tag], ...data); + + if (logger_container) { + const e = document.createElement("p") + e.classList.add("logger-line") + e.textContent = `[${tag}] ${message}` + e.style.color = log_tag_color[tag] + logger_container.append(e) + setTimeout(() => { + e.remove() + }, tag == "error" ? 60000 : 6000) + } +} + +globalThis.addEventListener("load", () => { + const d = document.createElement("div") + d.classList.add("logger-container") + document.body.append(d) + logger_container = d + + // clear the console every hour so logs dont accumulate + setInterval(() => console.clear(), 1000 * 60 * 60) +}) + +globalThis.onerror = (_ev, source, line, col, err) => { + log("error", `${err?.name} ${err?.message}`, err) + log("error", `on ${source}:${line}:${col}`, err) +} \ No newline at end of file -- cgit v1.2.3-70-g09d2