UNPKG

1.64 kBJavaScriptView Raw
1export const LOG_LEVEL_OFF = "off"
2export const LOG_LEVEL_ERRORS = "errors"
3export const LOG_LEVEL_ERRORS_AND_WARNINGS = "errors+warnings"
4export const LOG_LEVEL_ERRORS_WARNINGS_AND_LOGS = "errors+warnings+logs"
5export const LOG_LEVEL_MAXIMUM = "maximum"
6
7export const createLogger = ({ logLevel = LOG_LEVEL_ERRORS_WARNINGS_AND_LOGS }) => {
8 if (logLevel === LOG_LEVEL_MAXIMUM) {
9 return {
10 logTrace,
11 log,
12 logWarning,
13 logError,
14 }
15 }
16
17 if (logLevel === LOG_LEVEL_ERRORS_WARNINGS_AND_LOGS) {
18 return {
19 logTrace: logTraceDisabled,
20 log,
21 logWarning,
22 logError,
23 }
24 }
25
26 if (logLevel === LOG_LEVEL_ERRORS_AND_WARNINGS) {
27 return {
28 logTrace: logTraceDisabled,
29 log: logDisabled,
30 logWarning,
31 logError,
32 }
33 }
34
35 if (logLevel === LOG_LEVEL_ERRORS) {
36 return {
37 logTrace: logTraceDisabled,
38 log: logDisabled,
39 logWarning: logWarningDisabled,
40 logError,
41 }
42 }
43
44 if (logLevel === LOG_LEVEL_OFF) {
45 return {
46 logTrace: logTraceDisabled,
47 log: logDisabled,
48 logWarning: logWarningDisabled,
49 logError: logErrorDisabled,
50 }
51 }
52
53 throw new Error(`unexpected logLevel.
54logLevel: ${logLevel}
55allowed log levels: ${LOG_LEVEL_OFF}, ${LOG_LEVEL_ERRORS}, ${LOG_LEVEL_ERRORS_AND_WARNINGS}, ${LOG_LEVEL_ERRORS_WARNINGS_AND_LOGS}, ${LOG_LEVEL_MAXIMUM}`)
56}
57
58const logTrace = console.trace
59
60const logTraceDisabled = () => {}
61
62const log = console.log
63
64const logDisabled = () => {}
65
66const logWarning = console.warn
67
68const logWarningDisabled = () => {}
69
70const logError = console.error
71
72const logErrorDisabled = () => {}