123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138 |
- /* eslint-disable no-console */
- /**
- * Logger used throughout the application to allow configuration of
- * the log level required for the messages.
- */
- export class Logger {
- static _CheckLimit(message, limit) {
- let entry = Logger._LogLimitOutputs[message];
- if (!entry) {
- entry = { limit, current: 1 };
- Logger._LogLimitOutputs[message] = entry;
- }
- else {
- entry.current++;
- }
- return entry.current <= entry.limit;
- }
- static _GenerateLimitMessage(message, level = 1) {
- const entry = Logger._LogLimitOutputs[message];
- if (!entry || !Logger.MessageLimitReached) {
- return;
- }
- const type = this._Levels[level];
- if (entry.current === entry.limit) {
- Logger[type.name](Logger.MessageLimitReached.replace(/%LIMIT%/g, "" + entry.limit).replace(/%TYPE%/g, type.name ?? ""));
- }
- }
- static _AddLogEntry(entry) {
- Logger._LogCache = entry + Logger._LogCache;
- if (Logger.OnNewCacheEntry) {
- Logger.OnNewCacheEntry(entry);
- }
- }
- static _FormatMessage(message) {
- const padStr = (i) => (i < 10 ? "0" + i : "" + i);
- const date = new Date();
- return "[" + padStr(date.getHours()) + ":" + padStr(date.getMinutes()) + ":" + padStr(date.getSeconds()) + "]: " + message;
- }
- // eslint-disable-next-line @typescript-eslint/no-unused-vars
- static _LogDisabled(message, limit) {
- // nothing to do
- }
- static _LogEnabled(level = 1, message, limit) {
- // take first message if array
- const msg = Array.isArray(message) ? message[0] : message;
- if (limit !== undefined && !Logger._CheckLimit(msg, limit)) {
- return;
- }
- const formattedMessage = Logger._FormatMessage(msg);
- const type = this._Levels[level];
- const optionals = Array.isArray(message) ? message.slice(1) : [];
- type.logFunc && type.logFunc("BJS - " + formattedMessage, ...optionals);
- const entry = `<div style='color:${type.color}'>${formattedMessage}</div><br>`;
- Logger._AddLogEntry(entry);
- Logger._GenerateLimitMessage(msg, level);
- }
- /**
- * Gets current log cache (list of logs)
- */
- static get LogCache() {
- return Logger._LogCache;
- }
- /**
- * Clears the log cache
- */
- static ClearLogCache() {
- Logger._LogCache = "";
- Logger._LogLimitOutputs = {};
- Logger.errorsCount = 0;
- }
- /**
- * Sets the current log level (MessageLogLevel / WarningLogLevel / ErrorLogLevel)
- */
- static set LogLevels(level) {
- Logger.Log = Logger._LogDisabled;
- Logger.Warn = Logger._LogDisabled;
- Logger.Error = Logger._LogDisabled;
- [Logger.MessageLogLevel, Logger.WarningLogLevel, Logger.ErrorLogLevel].forEach((l) => {
- if ((level & l) === l) {
- const type = this._Levels[l];
- Logger[type.name] = Logger._LogEnabled.bind(Logger, l);
- }
- });
- }
- }
- /**
- * No log
- */
- Logger.NoneLogLevel = 0;
- /**
- * Only message logs
- */
- Logger.MessageLogLevel = 1;
- /**
- * Only warning logs
- */
- Logger.WarningLogLevel = 2;
- /**
- * Only error logs
- */
- Logger.ErrorLogLevel = 4;
- /**
- * All logs
- */
- Logger.AllLogLevel = 7;
- /**
- * Message to display when a message has been logged too many times
- */
- Logger.MessageLimitReached = "Too many %TYPE%s (%LIMIT%), no more %TYPE%s will be reported for this message.";
- Logger._LogCache = "";
- Logger._LogLimitOutputs = {};
- // levels according to the (binary) numbering.
- Logger._Levels = [
- {},
- { color: "white", logFunc: console.log, name: "Log" },
- { color: "orange", logFunc: console.warn, name: "Warn" },
- {},
- { color: "red", logFunc: console.error, name: "Error" },
- ];
- /**
- * Gets a value indicating the number of loading errors
- * @ignorenaming
- */
- // eslint-disable-next-line @typescript-eslint/naming-convention
- Logger.errorsCount = 0;
- /**
- * Log a message to the console
- */
- Logger.Log = Logger._LogEnabled.bind(Logger, Logger.MessageLogLevel);
- /**
- * Write a warning message to the console
- */
- Logger.Warn = Logger._LogEnabled.bind(Logger, Logger.WarningLogLevel);
- /**
- * Write an error message to the console
- */
- Logger.Error = Logger._LogEnabled.bind(Logger, Logger.ErrorLogLevel);
- //# sourceMappingURL=logger.js.map
|