You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
42 lines
1.2 KiB
42 lines
1.2 KiB
2 years ago
|
import { log_levels } from "./config.js";
|
||
|
const disabled = () => {};
|
||
|
|
||
|
const bind_logging = () => {
|
||
|
// We have to do this because rendered pages will include
|
||
|
// client components but they don't have a window variable.
|
||
|
// We try to use window to bind, and if it doesn't work then
|
||
|
// just use the base function. One question? Why bind window?
|
||
|
try {
|
||
|
return {
|
||
|
debug: console.log.bind(window.console),
|
||
|
warn: console.warn.bind(window.console),
|
||
|
info: console.info.bind(window.console),
|
||
|
error: console.error.bind(window.console),
|
||
|
table: console.table.bind(window.console),
|
||
|
assert: console.assert.bind(window.console),
|
||
|
}
|
||
|
} catch(error) {
|
||
|
return {
|
||
|
debug: console.log,
|
||
|
warn: console.warn,
|
||
|
info: console.info,
|
||
|
error: console.error,
|
||
|
table: console.table,
|
||
|
assert: console.assert
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
|
||
|
const all_levels = bind_logging();
|
||
|
|
||
|
const as_entries = Object.entries(all_levels);
|
||
|
|
||
|
export const logger = (levels = log_levels) => {
|
||
|
return Object.fromEntries(as_entries.map(([level, logf]) => {
|
||
|
return levels.includes(level) ? [level, logf] : [level, disabled];
|
||
|
}));
|
||
|
}
|
||
|
|
||
|
// this is a default logger that's configured with what's in config.js:log_levels
|
||
|
export const log = logger();
|