UNPKG

c8osdkjscore

Version:
341 lines 15.8 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); var c8oCore_1 = require("./c8oCore"); var c8oLogLevel_1 = require("./c8oLogLevel"); var c8oUtilsCore_1 = require("./c8oUtilsCore"); var c8oException_1 = require("./Exception/c8oException"); var c8oExceptionMessage_1 = require("./Exception/c8oExceptionMessage"); var C8oLogger = (function () { function C8oLogger(c8o, first) { this.initDone = false; this.affect_val(c8o, first); } C8oLogger.prototype.affect_val = function (c8o, first) { if (first) { this.c8o = c8o; this.remoteLogUrl = ""; this.remoteLogs = new c8oUtilsCore_1.Queue(); this.pending_remoteLogsLevel = new c8oUtilsCore_1.Queue(); this.pending_remoteLogs = new c8oUtilsCore_1.Queue(); this.alreadyRemoteLogging = []; this.alreadyRemoteLogging.push(false); this.remoteLogLevel = c8oLogLevel_1.C8oLogLevel.TRACE; this.startTimeRemoteLog = new Date().getTime(); this.uidRemoteLogs = Math.round((new Date().getTime() * Math.random())).toString(36); var obj = {}; obj["uid"] = this.uidRemoteLogs.toUpperCase(); obj["uuid"] = c8oCore_1.C8oCore.deviceUUID.toUpperCase(); obj["project"] = ""; this.env = JSON.stringify(obj); } else { this.c8o = c8o; this.remoteLogUrl = c8o.endpointConvertigo + "/admin/services/logs.Add"; this.remoteLogs = new c8oUtilsCore_1.Queue(); this.alreadyRemoteLogging = []; this.alreadyRemoteLogging.push(false); this.remoteLogLevel = c8oLogLevel_1.C8oLogLevel.TRACE; this.startTimeRemoteLog = new Date().getTime(); this.uidRemoteLogs = Math.round((new Date().getTime() * Math.random())).toString(36); var obj = {}; obj["uid"] = this.uidRemoteLogs.toUpperCase(); obj["uuid"] = c8oCore_1.C8oCore.deviceUUID.toUpperCase(); obj["project"] = encodeURIComponent(c8o.endpointProject.toString()); this.env = JSON.stringify(obj); } }; C8oLogger.prototype.isLoggableRemote = function (logLevel) { return this.c8o.logRemote && logLevel != null && c8oLogLevel_1.C8oLogLevel.TRACE.priority <= this.remoteLogLevel.priority && this.remoteLogLevel.priority <= logLevel.priority; }; C8oLogger.prototype.isLoggableConsole = function (logLevel) { return logLevel != null && c8oLogLevel_1.C8oLogLevel.TRACE.priority <= this.c8o.logLevelLocal.priority && this.c8o.logLevelLocal.priority <= logLevel.priority; }; C8oLogger.prototype.canLog = function (logLevel) { return this.isLoggableConsole(logLevel) || this.isLoggableRemote(logLevel); }; Object.defineProperty(C8oLogger.prototype, "isFatal", { get: function () { return this.canLog(c8oLogLevel_1.C8oLogLevel.FATAL); }, enumerable: true, configurable: true }); Object.defineProperty(C8oLogger.prototype, "isError", { get: function () { return this.canLog(c8oLogLevel_1.C8oLogLevel.ERROR); }, enumerable: true, configurable: true }); Object.defineProperty(C8oLogger.prototype, "isWarn", { get: function () { return this.canLog(c8oLogLevel_1.C8oLogLevel.WARN); }, enumerable: true, configurable: true }); Object.defineProperty(C8oLogger.prototype, "isInfo", { get: function () { return this.canLog(c8oLogLevel_1.C8oLogLevel.INFO); }, enumerable: true, configurable: true }); Object.defineProperty(C8oLogger.prototype, "isDebug", { get: function () { return this.canLog(c8oLogLevel_1.C8oLogLevel.DEBUG); }, enumerable: true, configurable: true }); Object.defineProperty(C8oLogger.prototype, "isTrace", { get: function () { return this.canLog(c8oLogLevel_1.C8oLogLevel.TRACE); }, enumerable: true, configurable: true }); C8oLogger.prototype.log = function (logLevel, message, exception) { var isLogConsole = this.isLoggableConsole(logLevel); var isLogRemote = this.isLoggableRemote(logLevel); if (isLogConsole || isLogRemote) { if (exception != null) { message += "\n" + exception.toString(); } var time = (((new Date().getTime().valueOf()) - (this.startTimeRemoteLog)) / 1000).toString(); if (!this.initDone) { var obj = {}; obj[(C8oLogger.JSON_KEY_TIME.valueOf())] = time; obj[(C8oLogger.JSON_KEY_LEVEL.valueOf())] = logLevel.name; obj[(C8oLogger.JSON_KEY_MESSAGE.valueOf())] = message.toString(); var objJson = obj; this.pending_remoteLogs.push(objJson); this.pending_remoteLogsLevel.push(logLevel); } else { if (isLogRemote) { var obj = {}; obj[(C8oLogger.JSON_KEY_TIME.valueOf())] = time; obj[(C8oLogger.JSON_KEY_LEVEL.valueOf())] = logLevel.name; obj[(C8oLogger.JSON_KEY_MESSAGE.valueOf())] = message.toString(); var objJson = obj; this.remoteLogs.push(objJson); this.logRemote(); } if (isLogConsole) { console.log("(" + time + ") [" + logLevel.name + "] " + message); } } } }; C8oLogger.prototype.fatal = function (message, exceptions) { if (exceptions === void 0) { exceptions = null; } this.log(c8oLogLevel_1.C8oLogLevel.FATAL, message, exceptions); }; C8oLogger.prototype.error = function (message, exceptions) { if (exceptions === void 0) { exceptions = null; } this.log(c8oLogLevel_1.C8oLogLevel.ERROR, message, exceptions); }; C8oLogger.prototype.warn = function (message, exceptions) { if (exceptions === void 0) { exceptions = null; } this.log(c8oLogLevel_1.C8oLogLevel.WARN, message, exceptions); }; C8oLogger.prototype.info = function (message, exceptions) { if (exceptions === void 0) { exceptions = null; } this.log(c8oLogLevel_1.C8oLogLevel.INFO, message, exceptions); }; C8oLogger.prototype.debug = function (message, exceptions) { if (exceptions === void 0) { exceptions = null; } this.log(c8oLogLevel_1.C8oLogLevel.DEBUG, message, exceptions); }; C8oLogger.prototype.trace = function (message, exceptions) { if (exceptions === void 0) { exceptions = null; } this.log(c8oLogLevel_1.C8oLogLevel.TRACE, message, exceptions); }; C8oLogger.prototype._log = function (logLevel, messages, exceptions) { if (exceptions === void 0) { exceptions = null; } if (this.c8o.logC8o) { this.log(logLevel, C8oLogger.LOG_INTERNAL_PREFIX.toString() + messages.toString(), exceptions); } }; C8oLogger.prototype._debug = function (message, exceptions) { if (exceptions === void 0) { exceptions = null; } this._log(c8oLogLevel_1.C8oLogLevel.DEBUG, message, exceptions); }; C8oLogger.prototype._trace = function (message, exceptions) { if (exceptions === void 0) { exceptions = null; } this._log(c8oLogLevel_1.C8oLogLevel.TRACE, message, exceptions); }; C8oLogger.prototype.logRemoteInit = function () { var _this = this; this.initDone = true; var count = 0; var listSize = this.pending_remoteLogs.count(); var logsArray = new Array(); while (count < listSize && count < C8oLogger.REMOTE_LOG_LIMIT) { var logLvl = this.pending_remoteLogsLevel.pop(); var mvar = this.pending_remoteLogs.pop(); if (this.isLoggableConsole(logLvl)) { console.log("(" + mvar["time"] + ") [" + logLvl.name + "] " + mvar["msg"]); } if (this.isLoggableRemote(logLvl)) { logsArray.push(mvar); count += 1; } } var canLog = false; canLog = logsArray.length > 0; if (canLog) { this.alreadyRemoteLogging[0] = true; } var parameters = {}; parameters[C8oLogger.JSON_KEY_LOGS.valueOf()] = JSON.stringify(logsArray); parameters[c8oCore_1.C8oCore.ENGINE_PARAMETER_DEVICE_UUID] = this.c8o.deviceUUID; parameters[C8oLogger.JSON_KEY_ENV] = this.env; this.c8o.httpInterface.handleRequest(this.remoteLogUrl, parameters) .then(function (response) { if (response !== undefined) { if (response.error !== undefined) { _this.c8o.logRemote = false; if (_this.c8o.logOnFail != null) { _this.c8o.logOnFail(new c8oException_1.C8oException(c8oExceptionMessage_1.C8oExceptionMessage.RemoteLogFail(), response.error), null); } } } var logLevelResponse = response[C8oLogger.JSON_KEY_REMOTE_LOG_LEVEL.toString()]; if (logLevelResponse != null) { var logLevelResponseStr = logLevelResponse.toString(); var c8oLogLevel = c8oLogLevel_1.C8oLogLevel.getC8oLogLevel(logLevelResponseStr); if (c8oLogLevel != null) { _this.remoteLogLevel = c8oLogLevel; } _this.alreadyRemoteLogging[0] = false; _this.logRemote(); } }) .catch(function (error) { _this.c8o.logRemote = false; if (_this.c8o.logOnFail != null) { _this.c8o.logOnFail(new c8oException_1.C8oException(c8oExceptionMessage_1.C8oExceptionMessage.RemoteLogFail(), error), null); } }); }; C8oLogger.prototype.logRemote = function () { var _this = this; var canLog = false; canLog = this.remoteLogs.count() > 0; if (canLog) { this.alreadyRemoteLogging[0] = true; } if (canLog) { var count = 0; var listSize = this.remoteLogs.count(); var logsArray = []; while (count < listSize && count < C8oLogger.REMOTE_LOG_LIMIT) { logsArray.push(this.remoteLogs.pop()); count += 1; } var parameters = {}; parameters[C8oLogger.JSON_KEY_LOGS.valueOf()] = JSON.stringify(logsArray); parameters[c8oCore_1.C8oCore.ENGINE_PARAMETER_DEVICE_UUID] = this.c8o.deviceUUID; parameters[C8oLogger.JSON_KEY_ENV] = this.env; this.c8o.httpInterface.handleRequest(this.remoteLogUrl, parameters) .then(function (response) { if (response !== undefined) { if (response.error !== undefined) { _this.c8o.logRemote = false; if (_this.c8o.logOnFail != null) { _this.c8o.logOnFail(new c8oException_1.C8oException(c8oExceptionMessage_1.C8oExceptionMessage.RemoteLogFail(), response.error), null); } } } var logLevelResponse = response[C8oLogger.JSON_KEY_REMOTE_LOG_LEVEL.toString()]; if (logLevelResponse != null) { var logLevelResponseStr = logLevelResponse.toString(); var c8oLogLevel = c8oLogLevel_1.C8oLogLevel.getC8oLogLevel(logLevelResponseStr); if (c8oLogLevel != null) { _this.remoteLogLevel = c8oLogLevel; } _this.alreadyRemoteLogging[0] = false; _this.logRemote(); } }) .catch(function (error) { _this.c8o.logRemote = false; if (_this.c8o.logOnFail != null) { _this.c8o.logOnFail(new c8oException_1.C8oException(c8oExceptionMessage_1.C8oExceptionMessage.RemoteLogFail(), error), null); } }); } }; C8oLogger.prototype.logMethodCall = function (methodName) { var parameters = []; for (var _i = 1; _i < arguments.length; _i++) { parameters[_i - 1] = arguments[_i]; } if (this.c8o.logC8o && this.isDebug) { var methodCallLogMessage = "Method call: " + methodName; if (parameters == null || Object.keys(parameters).length === 0) { this._debug(methodCallLogMessage); } if (this.isTrace) { methodCallLogMessage += ", Parameters: ["; for (var _a = 0, parameters_1 = parameters; _a < parameters_1.length; _a++) { var param = parameters_1[_a]; var paramStr = "null"; if (parameters != null) { paramStr = JSON.stringify(param); } methodCallLogMessage += "\n" + paramStr + ", "; } methodCallLogMessage = methodCallLogMessage.substring(0, methodCallLogMessage.length - 2) + "]"; this._trace(methodCallLogMessage); } else { this._debug(methodCallLogMessage); } } }; C8oLogger.prototype.logC8oCall = function (url, parameters) { if (this.c8o.logC8o && this.isDebug) { var c8oCallLogMessage = "C8o call: " + url; if (parameters.length > 0) { c8oCallLogMessage += "\n" + String(parameters); } this._debug(c8oCallLogMessage); } }; C8oLogger.prototype.logC8oCallJSONResponse = function (response, url, parameters) { this.logC8oCallResponse(JSON.stringify(response), "JSON", url, parameters); }; C8oLogger.prototype.logC8oCallXMLResponse = function (response, url, parameters) { this.logC8oCallResponse(response.toString(), "XML", url, parameters); }; C8oLogger.prototype.logC8oCallResponse = function (responseStr, responseType, url, parameters) { if (this.c8o.logC8o && this.isTrace) { var c8oCallResponseLogMessage = void 0; if (url == null) { c8oCallResponseLogMessage = "C8o call " + responseType + " response: "; } else { c8oCallResponseLogMessage = "C8o call " + responseType + " response: " + url; } if (parameters.count > 0) { c8oCallResponseLogMessage += "\n" + parameters.toString(); } c8oCallResponseLogMessage += "\n" + responseStr; this._trace(c8oCallResponseLogMessage); } }; C8oLogger.LOG_INTERNAL_PREFIX = "[c8o] "; C8oLogger.REMOTE_LOG_LIMIT = 100; C8oLogger.JSON_KEY_REMOTE_LOG_LEVEL = "remoteLogLevel"; C8oLogger.JSON_KEY_TIME = "time"; C8oLogger.JSON_KEY_LEVEL = "level"; C8oLogger.JSON_KEY_MESSAGE = "msg"; C8oLogger.JSON_KEY_LOGS = "logs"; C8oLogger.JSON_KEY_ENV = "env"; return C8oLogger; }()); exports.C8oLogger = C8oLogger; //# sourceMappingURL=c8oLogger.js.map