forked from video-dev/hls.js
-
Notifications
You must be signed in to change notification settings - Fork 0
/
logger.ts
85 lines (76 loc) · 1.98 KB
/
logger.ts
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
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
export interface ILogFunction {
(message?: any, ...optionalParams: any[]): void;
}
export interface ILogger {
trace: ILogFunction;
debug: ILogFunction;
log: ILogFunction;
warn: ILogFunction;
info: ILogFunction;
error: ILogFunction;
}
const noop: ILogFunction = function () {};
const fakeLogger: ILogger = {
trace: noop,
debug: noop,
log: noop,
warn: noop,
info: noop,
error: noop,
};
let exportedLogger: ILogger = fakeLogger;
// let lastCallTime;
// function formatMsgWithTimeInfo(type, msg) {
// const now = Date.now();
// const diff = lastCallTime ? '+' + (now - lastCallTime) : '0';
// lastCallTime = now;
// msg = (new Date(now)).toISOString() + ' | [' + type + '] > ' + msg + ' ( ' + diff + ' ms )';
// return msg;
// }
function consolePrintFn(type: string): ILogFunction {
const func: ILogFunction = self.console[type];
if (func) {
return func.bind(self.console, `[${type}] >`);
}
return noop;
}
function exportLoggerFunctions(
debugConfig: boolean | ILogger,
...functions: string[]
): void {
functions.forEach(function (type) {
exportedLogger[type] = debugConfig[type]
? debugConfig[type].bind(debugConfig)
: consolePrintFn(type);
});
}
export function enableLogs(debugConfig: boolean | ILogger, id: string): void {
// check that console is available
if (
(self.console && debugConfig === true) ||
typeof debugConfig === 'object'
) {
exportLoggerFunctions(
debugConfig,
// Remove out from list here to hard-disable a log-level
// 'trace',
'debug',
'log',
'info',
'warn',
'error'
);
// Some browsers don't allow to use bind on console object anyway
// fallback to default if needed
try {
exportedLogger.log(
`Debug logs enabled for "${id}" in hls.js version ${__VERSION__}`
);
} catch (e) {
exportedLogger = fakeLogger;
}
} else {
exportedLogger = fakeLogger;
}
}
export const logger: ILogger = exportedLogger;