-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathindex.js
More file actions
38 lines (34 loc) · 1.1 KB
/
index.js
File metadata and controls
38 lines (34 loc) · 1.1 KB
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
const identity = () => {};
const isBrowser = globalThis.localStorage;
const levels = ["debug", "info", "warn", "error"];
const NODE_ENV = process.env.NODE_ENV;
const isDev = !NODE_ENV || NODE_ENV === "dev" || NODE_ENV === "development";
const write =
isBrowser || isDev
? require("./writers/console")
: require("./writers/consoleErrJson");
const isEnabledForLevel = require("./enabled");
const createLog = (name, parent) => {
let lastTime = Date.now();
let isEnabled;
const log = (...arg) => log.info(...arg);
levels.forEach((level) => {
if (!isEnabled) {
isEnabled = isEnabledForLevel(name, level);
}
log[level] = isEnabled
? (...data) => {
const time = Date.now();
const diff = time - lastTime;
lastTime = time;
log.write({ name, time, diff, level, data });
}
: identity;
log[level].enabled = isEnabled;
if (!log.level && isEnabled) log.level = level;
});
log.sub = (subName) => createLog(name + ":" + subName, log);
log.write = parent.write;
return log;
};
module.exports = (name) => createLog(name, { write });