1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
|
import styles, { type CSPair } from 'ansi-styles';
import log from 'loglevel';
import prefix from 'loglevel-plugin-prefix';
const colors: Partial<Record<string, CSPair>> = {
TRACE: styles.magenta,
DEBUG: styles.cyan,
INFO: styles.blue,
WARN: styles.yellow,
ERROR: styles.red,
};
prefix.reg(log);
if (import.meta.env.DEV) {
log.setLevel(log.levels.DEBUG);
} else {
log.setLevel(log.levels.WARN);
}
if ('chrome' in window) {
// Only Chromium supports console ANSI escape sequences.
prefix.apply(log, {
format(level, name, timestamp) {
const formattedTimestamp = `${styles.gray.open}[${timestamp.toString()}]${
styles.gray.close
}`;
const levelColor = colors[level.toUpperCase()] || styles.red;
const formattedLevel = `${levelColor.open}${level}${levelColor.close}`;
const formattedName = `${styles.green.open}(${name || 'root'})${
styles.green.close
}`;
return `${formattedTimestamp} ${formattedLevel} ${formattedName}`;
},
});
} else {
prefix.apply(log, {
template: '[%t] %l (%n)',
});
}
const appLogger = log.getLogger(import.meta.env.VITE_PACKAGE_NAME);
appLogger.info(
'Version:',
import.meta.env.VITE_PACKAGE_NAME,
import.meta.env.VITE_PACKAGE_VERSION,
);
appLogger.info('Debug mode:', import.meta.env.DEV);
export default function getLogger(name: string | symbol): log.Logger {
return log.getLogger(
`${import.meta.env.VITE_PACKAGE_NAME}.${name.toString()}`,
);
}
|