aboutsummaryrefslogtreecommitdiffstats
path: root/subprojects/frontend/src/utils/getLogger.ts
diff options
context:
space:
mode:
authorLibravatar Kristóf Marussy <kristof@marussy.com>2022-08-12 19:54:46 +0200
committerLibravatar Kristóf Marussy <kristof@marussy.com>2022-08-12 19:54:46 +0200
commitd22c3b0c257f5daf5b401988a35ab9ce981a2341 (patch)
tree0a661c927c37b52197326d1c05e211daf9bd19e5 /subprojects/frontend/src/utils/getLogger.ts
parentfix(language): rule parsing test (diff)
downloadrefinery-d22c3b0c257f5daf5b401988a35ab9ce981a2341.tar.gz
refinery-d22c3b0c257f5daf5b401988a35ab9ce981a2341.tar.zst
refinery-d22c3b0c257f5daf5b401988a35ab9ce981a2341.zip
refactor(frontend): move from Webpack to Vite
Also overhaulds the building and linting for frontend assets.
Diffstat (limited to 'subprojects/frontend/src/utils/getLogger.ts')
-rw-r--r--subprojects/frontend/src/utils/getLogger.ts55
1 files changed, 55 insertions, 0 deletions
diff --git a/subprojects/frontend/src/utils/getLogger.ts b/subprojects/frontend/src/utils/getLogger.ts
new file mode 100644
index 00000000..301fd76d
--- /dev/null
+++ b/subprojects/frontend/src/utils/getLogger.ts
@@ -0,0 +1,55 @@
1import styles, { type CSPair } from 'ansi-styles';
2import log from 'loglevel';
3import prefix from 'loglevel-plugin-prefix';
4
5const colors: Partial<Record<string, CSPair>> = {
6 TRACE: styles.magenta,
7 DEBUG: styles.cyan,
8 INFO: styles.blue,
9 WARN: styles.yellow,
10 ERROR: styles.red,
11};
12
13prefix.reg(log);
14
15if (import.meta.env.DEV) {
16 log.setLevel(log.levels.DEBUG);
17} else {
18 log.setLevel(log.levels.WARN);
19}
20
21if ('chrome' in window) {
22 // Only Chromium supports console ANSI escape sequences.
23 prefix.apply(log, {
24 format(level, name, timestamp) {
25 const formattedTimestamp = `${styles.gray.open}[${timestamp.toString()}]${
26 styles.gray.close
27 }`;
28 const levelColor = colors[level.toUpperCase()] || styles.red;
29 const formattedLevel = `${levelColor.open}${level}${levelColor.close}`;
30 const formattedName = `${styles.green.open}(${name || 'root'})${
31 styles.green.close
32 }`;
33 return `${formattedTimestamp} ${formattedLevel} ${formattedName}`;
34 },
35 });
36} else {
37 prefix.apply(log, {
38 template: '[%t] %l (%n)',
39 });
40}
41
42const appLogger = log.getLogger(import.meta.env.VITE_PACKAGE_NAME);
43
44appLogger.info(
45 'Version:',
46 import.meta.env.VITE_PACKAGE_NAME,
47 import.meta.env.VITE_PACKAGE_VERSION,
48);
49appLogger.info('Debug mode:', import.meta.env.DEV);
50
51export default function getLogger(name: string | symbol): log.Logger {
52 return log.getLogger(
53 `${import.meta.env.VITE_PACKAGE_NAME}.${name.toString()}`,
54 );
55}