c8osdkjscore
Version:
convertigo's sdk js core
341 lines • 15.8 kB
JavaScript
"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