k-logging
Version:
582 lines (482 loc) • 21.7 kB
JavaScript
/******/ (function(modules) { // webpackBootstrap
/******/ // The module cache
/******/ var installedModules = {};
/******/ // The require function
/******/ function __webpack_require__(moduleId) {
/******/ // Check if module is in cache
/******/ if(installedModules[moduleId])
/******/ return installedModules[moduleId].exports;
/******/ // Create a new module (and put it into the cache)
/******/ var module = installedModules[moduleId] = {
/******/ exports: {},
/******/ id: moduleId,
/******/ loaded: false
/******/ };
/******/ // Execute the module function
/******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);
/******/ // Flag the module as loaded
/******/ module.loaded = true;
/******/ // Return the exports of the module
/******/ return module.exports;
/******/ }
/******/ // expose the modules object (__webpack_modules__)
/******/ __webpack_require__.m = modules;
/******/ // expose the module cache
/******/ __webpack_require__.c = installedModules;
/******/ // __webpack_public_path__
/******/ __webpack_require__.p = "";
/******/ // Load entry module and return exports
/******/ return __webpack_require__(0);
/******/ })
/************************************************************************/
/******/ ([
/* 0 */
/***/ function(module, exports, __webpack_require__) {
var __WEBPACK_AMD_DEFINE_RESULT__;'use strict';
var _singleKLogging = __webpack_require__(1);
var _singleKLogging2 = _interopRequireDefault(_singleKLogging);
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
if (typeof module != 'undefined' && module.exports) {
module.exports = _singleKLogging2.default;
} else if (true) {
!(__WEBPACK_AMD_DEFINE_RESULT__ = function () {
return _singleKLogging2.default;
}.call(exports, __webpack_require__, exports, module), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));
} else {
window.singleKLogging = _singleKLogging2.default;
}
window.singleKLogging = _singleKLogging2.default;
//window.K_Logging = K_Logging
/***/ },
/* 1 */
/***/ function(module, exports, __webpack_require__) {
'use strict';
Object.defineProperty(exports, "__esModule", {
value: true
});
var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();
var _Options = __webpack_require__(2);
var _Options2 = _interopRequireDefault(_Options);
var _Utils = __webpack_require__(3);
var _Utils2 = _interopRequireDefault(_Utils);
var _singleDeepStream = __webpack_require__(4);
var _singleDeepStream2 = _interopRequireDefault(_singleDeepStream);
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
var K_Logging = function () {
function K_Logging() {
_classCallCheck(this, K_Logging);
var localstrage_uuid = localStorage.getItem('k_logging_uuid');
this.data = {
'info': [],
'warn': [],
'error': []
};
this.options = _Options2.default.getDefaultOptions();
this.deepStream = _singleDeepStream2.default;
this.url = window.location.href;
if (localstrage_uuid) {
this.uuid = localstrage_uuid;
} else {
var uuid = _Utils2.default.getUuid();
localStorage.setItem('k_logging_uuid', uuid);
this.uuid = uuid;
}
}
_createClass(K_Logging, [{
key: 'setOptions',
value: function setOptions(options) {
this.options = _Options2.default.repleaceOptions(options);
if (this.options.open_level.indexOf('error')) {
this.listenWindowError();
}
if (this.options.evel_js === true) {
this.deepStream.subscribeJS();
}
if (this.options.switch_listener === true) {
this.openSwitchListneer();
}
}
/*
* 监听浏览器自己的error,并捕抓出来
*/
}, {
key: 'listenWindowError',
value: function listenWindowError() {
var _self = this;
window.onerror = function (msg, url, lineNo, columnNo, error) {
var string = msg.toLowerCase();
var substring = 'script error';
if (string.indexOf(substring) > -1) {
_self.error('Script Error: See Browser Console for Detail');
} else {
var message = ['Message: ' + msg, 'URL: ' + url, 'Line: ' + lineNo, 'Column: ' + columnNo, 'Error object: ' + JSON.stringify(error)].join(' - ');
_self.error(message);
}
return false;
};
}
/*
* 监听keyup事件,当密钥输入正确时,启动配置全开
*/
}, {
key: 'openSwitchListneer',
value: function openSwitchListneer() {
window.k_logging_key = '';
var _self = this,
switchListneerFunction = function switchListneerFunction(event) {
window.k_logging_key += _Utils2.default.asciiToInt(event.keyCode);
console.log(window.k_logging_key);
if (window.k_logging_key.indexOf(_self.options.app_key) !== -1) {
_self.setOptions(_Options2.default.layerOpenOptions());
document.body.removeEventListener('keyup', switchListneerFunction);
}
};
document.body.addEventListener('keyup', switchListneerFunction);
}
}, {
key: 'log',
value: function log() {
var msg = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : '';
var level = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0;
msg = this.packagingMsg(msg, level);
//屏蔽级别
if (this.options.open_level.indexOf(level) === -1) return;
//选择输出口
if (this.options.method.indexOf('console') !== -1) {
this.console(msg, level);
}
if (this.options.method.indexOf('display') !== -1) {
this.display(msg, level);
}
if (this.options.method.indexOf('website') !== -1) {
this.website(msg, level);
}
}
}, {
key: 'packagingMsg',
value: function packagingMsg() {
var msg = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : '';
var level = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0;
var packagingMsg = {
'date': _Utils2.default.getDate(),
level: level,
msg: msg,
'uuid': this.uuid,
'url': this.url
};
return JSON.stringify(packagingMsg);
}
}, {
key: 'console',
value: function (_console) {
function console() {
return _console.apply(this, arguments);
}
console.toString = function () {
return _console.toString();
};
return console;
}(function () {
var msg = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : '';
var level = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0;
if (level === 'info') {
console.log(msg);
} else if (level === 'warn') {
console.warn(msg);
} else if (level === 'error') {
console.error(msg);
}
})
}, {
key: 'display',
value: function display() {
var msg = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : '';
var level = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0;
}
}, {
key: 'website',
value: function website() {
var msg = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : '';
this.deepStream.sendMsg(msg);
//this.deepStream.record.set('firstname', msg)
}
}, {
key: 'info',
value: function info() {
var msg = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : '';
this.log(msg, 'info');
}
}, {
key: 'warn',
value: function warn() {
var msg = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : '';
this.log(msg, 'warn');
}
}, {
key: 'error',
value: function error() {
var msg = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : '';
this.log(msg, 'error');
}
}]);
return K_Logging;
}();
exports.default = new K_Logging();
/***/ },
/* 2 */
/***/ function(module, exports, __webpack_require__) {
'use strict';
Object.defineProperty(exports, "__esModule", {
value: true
});
var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();
var _Utils = __webpack_require__(3);
var _Utils2 = _interopRequireDefault(_Utils);
var _singleKLogging = __webpack_require__(1);
var _singleKLogging2 = _interopRequireDefault(_singleKLogging);
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
var Options = function () {
function Options() {
_classCallCheck(this, Options);
}
_createClass(Options, null, [{
key: 'repleaceOptions',
value: function repleaceOptions(options) {
if (options == undefined) return Options.getDefaultOptions();
var defaultOptions = _singleKLogging2.default.options || Options.getDefaultOptions(),
//前者为layer时只替换部分属性
keys = Object.keys(defaultOptions);
for (var i = keys.length - 1; i >= 0; i--) {
if (options[keys[i]] === undefined) {
options[keys[i]] = defaultOptions[keys[i]];
}
}
return options;
}
}, {
key: 'getDefaultOptions',
value: function getDefaultOptions() {
return {
app_key: _Utils2.default.getUuid(), //default
open_level: ['info', 'warn', 'error'],
method: ['console', 'display', 'website'],
evel_js: true,
switch_listener: true
};
}
}, {
key: 'layerOpenOptions',
value: function layerOpenOptions() {
return {
open_level: ['info', 'warn', 'error'],
method: ['console', 'display', 'website'],
evel_js: !_singleKLogging2.default.options,
switch_listener: false
};
}
}]);
return Options;
}();
exports.default = Options;
/***/ },
/* 3 */
/***/ function(module, exports) {
'use strict';
Object.defineProperty(exports, "__esModule", {
value: true
});
var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();
function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
var Utils = function () {
function Utils() {
_classCallCheck(this, Utils);
}
_createClass(Utils, null, [{
key: 'getScript',
value: function getScript(url, callback) {
var head = document.getElementsByTagName('head')[0],
js = document.createElement('script');
js.setAttribute('type', 'text/javascript');
js.setAttribute('src', url);
head.appendChild(js);
//执行回调
var callbackFn = function callbackFn() {
if (typeof callback === 'function') {
callback();
}
};
if (document.all) {
//IE
js.onreadystatechange = function () {
if (js.readyState == 'loaded' || js.readyState == 'complete') {
callbackFn();
}
};
} else {
js.onload = function () {
callbackFn();
};
}
}
}, {
key: 'getDate',
value: function getDate() {
var date = new Date(),
Y = '',
//Y = date.getFullYear() + '-',
M = Utils.addZero(date.getMonth() + 1) + '-',
D = Utils.addZero(date.getDate()) + ' ',
h = Utils.addZero(date.getHours()) + ':',
m = Utils.addZero(date.getMinutes()) + ':',
s = Utils.addZero(date.getSeconds()) + '.',
ms = date.getMilliseconds();
return Y + M + D + h + m + s + ms;
}
}, {
key: 'addZero',
value: function addZero(num) {
if (num < 10) {
return '0' + num;
}
return num;
}
}, {
key: 'getUrlArgs',
value: function getUrlArgs(name) {
var args = {},
query = window.location.search.substring(1),
pairs = query.split('&');
for (var i = pairs.length - 1; i >= 0; i--) {
var pos = pairs[i].indexOf('='),
_name = pairs[i].substring(0, pos),
value = pairs[i].substring(pos + 1, pairs[i].length);
args[_name] = value;
}
if (name == undefined) return args;
return args[name];
}
}, {
key: 'getUuid',
value: function getUuid() {
function s4() {
return Math.floor((1 + Math.random()) * 0x10000).toString(16).substring(1);
}
return s4() + s4() + '-' + s4() + '-' + s4() + '-' + s4() + '-' + s4() + s4() + s4();
}
}, {
key: 'asciiToInt',
value: function asciiToInt(ascii) {
var ASCII_TO_INT_OBJECT = {
'31': '', '32': ' ', '33': '!', '34': '\"', '35': '#',
'36': '$', '37': '%', '38': '&', '39': '\'', '40': '(',
'41': ')', '42': '*', '43': '+', '44': ',', '45': '-',
'46': '.', '47': '/', '48': '0', '49': '1', '50': '2',
'51': '3', '52': '4', '53': '5', '54': '6', '55': '7',
'56': '8', '57': '9', '58': ':', '59': ';', '60': '<',
'61': '=', '62': '>', '63': '?', '64': '@', '65': 'A',
'66': 'B', '67': 'C', '68': 'D', '69': 'E', '70': 'F',
'71': 'G', '72': 'H', '73': 'I', '74': 'J', '75': 'K',
'76': 'L', '77': 'M', '78': 'N', '79': 'O', '80': 'P',
'81': 'Q', '82': 'R', '83': 'S', '84': 'T', '85': 'U',
'86': 'V', '87': 'W', '88': 'X', '89': 'Y', '90': 'Z',
'91': '[', '92': '\\', '93': ']', '94': '^', '95': '_',
'96': '`', '97': 'a', '98': 'b', '99': 'c', '100': 'd',
'101': 'e', '102': 'f', '103': 'g', '104': 'h', '105': 'i',
'106': 'j', '107': 'k', '108': 'l', '109': 'm', '110': 'n',
'111': 'o', '112': 'p', '113': 'q', '114': 'r', '115': 's',
'116': 't', '117': 'u', '118': 'v', '119': 'w', '120': 'x',
'121': 'y', '122': 'z', '123': '{', '124': '|', '125': '}',
'126': '~', '127': ''
};
return ASCII_TO_INT_OBJECT[ascii];
}
}]);
return Utils;
}();
exports.default = Utils;
/***/ },
/* 4 */
/***/ function(module, exports, __webpack_require__) {
'use strict';
Object.defineProperty(exports, "__esModule", {
value: true
});
var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();
var _Utils = __webpack_require__(3);
var _Utils2 = _interopRequireDefault(_Utils);
var _singleKLogging = __webpack_require__(1);
var _singleKLogging2 = _interopRequireDefault(_singleKLogging);
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
var DeepStream = function () {
function DeepStream() {
//console.log('DeepStream.constructor被调用了')
/*if(window.deepstream === undefined) {
Utils.getScript(
'https://qiniu.404mzk.com/deepstream.min.js',
this.setRecord()
)
}else {
this.setRecord()
}*/
_classCallCheck(this, DeepStream);
}
_createClass(DeepStream, [{
key: 'setRecord',
value: function setRecord() {
if (this.record === undefined) {
//防止多次连接 会有多个websocket连接
var client = window.deepstream('120.24.37.206:6020').login();
this.record = client.record.getRecord(_singleKLogging2.default.options.app_key || 'K-Logging');
}
}
}, {
key: 'sendMsg',
value: function sendMsg(msg) {
var _this = this;
//消息频率较高时,会执行多次加载脚本
if (window.deepstream === undefined) {
(function () {
var _self = _this;
_Utils2.default.getScript('http://qiniu.404mzk.com/deepstream.min.js', function () {
_self.setRecord();
_self.record.set('K-Logging', msg);
});
})();
} else {
this.record.set('K-Logging', msg);
}
}
}, {
key: 'subscribeJS',
value: function subscribeJS() {
var _self = this;
if (window.deepstream === undefined) {
_Utils2.default.getScript('http://qiniu.404mzk.com/deepstream.min.js', function () {
_self.setRecord();
_self.record.subscribe('subscribeJS', function (js) {
var result = eval(js);
_singleKLogging2.default.info(result);
});
});
} else {
//这里应该加个判断,是否已经曾经接收过了
_self.record.subscribe('subscribeJS', function (js) {
var result = eval(js);
_singleKLogging2.default.info(result);
});
}
}
}, {
key: 'getInstance',
value: function getInstance() {
if (this.record === undefined) {}
}
}]);
return DeepStream;
}();
exports.default = new DeepStream();
/***/ }
/******/ ]);