tweb/src/lib/logger.ts

71 lines
1.9 KiB
TypeScript
Raw Normal View History

2021-04-08 15:52:31 +02:00
/*
* https://github.com/morethanwords/tweb
* Copyright (C) 2019-2021 Eduard Kuzmenko
* https://github.com/morethanwords/tweb/blob/master/LICENSE
*/
2021-02-13 16:32:10 +01:00
import DEBUG from "../config/debug";
2021-04-27 17:45:53 +02:00
export enum LogTypes {
None = 0,
Error = 1,
Warn = 2,
Log = 4,
Debug = 8
2020-06-21 14:25:17 +02:00
};
2021-04-27 17:45:53 +02:00
export const LOG_LEVELS = [LogTypes.None, LogTypes.Error, LogTypes.Warn, LogTypes.Log, LogTypes.Debug];
const _logTimer = Date.now();
2020-06-21 14:25:17 +02:00
function dT() {
return '[' + ((Date.now() - _logTimer) / 1000).toFixed(3) + ']';
2020-06-21 14:25:17 +02:00
}
2021-07-20 00:24:29 +02:00
export function logger(prefix: string, type: LogTypes = LogTypes.Log | LogTypes.Warn | LogTypes.Error, ignoreDebugReset = false) {
if(!DEBUG && !ignoreDebugReset/* || true */) {
2021-04-27 17:45:53 +02:00
type = LogTypes.Error;
2020-06-21 14:25:17 +02:00
}
2020-08-26 21:25:43 +02:00
//level = LogLevels.log | LogLevels.warn | LogLevels.error | LogLevels.debug
2020-08-26 18:14:23 +02:00
2020-06-21 14:25:17 +02:00
function Log(...args: any[]) {
2021-04-27 17:45:53 +02:00
return type & LogTypes.Log && console.log(dT(), prefix, ...args);
2020-06-21 14:25:17 +02:00
}
Log.warn = function(...args: any[]) {
2021-04-27 17:45:53 +02:00
return type & LogTypes.Warn && console.warn(dT(), prefix, ...args);
2020-06-21 14:25:17 +02:00
};
Log.info = function(...args: any[]) {
2021-04-27 17:45:53 +02:00
return type & LogTypes.Log && console.info(dT(), prefix, ...args);
2020-06-21 14:25:17 +02:00
};
Log.error = function(...args: any[]) {
2021-04-27 17:45:53 +02:00
return type & LogTypes.Error && console.error(dT(), prefix, ...args);
2020-06-21 14:25:17 +02:00
};
Log.trace = function(...args: any[]) {
2021-04-27 17:45:53 +02:00
return type & LogTypes.Log && console.trace(dT(), prefix, ...args);
2020-06-21 14:25:17 +02:00
};
2020-08-26 21:25:43 +02:00
/* Log.debug = function(...args: any[]) {
return level & LogLevels.debug && console.log(dT(), prefix, ...args);
2020-08-26 21:25:43 +02:00
}; */
2020-08-26 18:14:23 +02:00
2020-08-26 21:25:43 +02:00
Log.debug = function(...args: any[]) {
2021-04-27 17:45:53 +02:00
return type & LogTypes.Debug && console.debug(dT(), prefix, ...args);
2020-08-26 21:25:43 +02:00
};
Log.setPrefix = function(_prefix: string) {
prefix = '[' + _prefix + ']:';
};
Log.setPrefix(prefix);
2021-04-27 17:45:53 +02:00
Log.setLevel = function(level: 0 | 1 | 2 | 3 | 4) {
type = LOG_LEVELS.slice(0, level + 1).reduce((acc, v) => acc | v, 0) as any;
};
2020-06-21 14:25:17 +02:00
return Log;
2021-04-27 17:45:53 +02:00
};