olympus-r-17plugins
Version:
A plugin of Olympus for 17zuoye.
155 lines (154 loc) • 5.44 kB
JavaScript
import * as tslib_1 from "tslib";
import { Injectable } from "olympus-r/core/injector/Injector";
import { core } from "olympus-r/core/Core";
import { extendObject } from "olympus-r/utils/ObjectUtil";
import Shell17 from "../env/Shell17";
import { environment17 } from "../env/Environment17";
/**
* @author Raykid
* @email initial_r@qq.com
* @create date 2017-10-27
* @modify date 2017-10-27
*
* 一起作业日志管理器
*/
export var LogLevel;
(function (LogLevel) {
LogLevel[LogLevel["EMERG"] = 0] = "EMERG";
LogLevel[LogLevel["ALERT"] = 1] = "ALERT";
LogLevel[LogLevel["CRIT"] = 2] = "CRIT";
LogLevel[LogLevel["ERR"] = 3] = "ERR";
LogLevel[LogLevel["WARNING"] = 4] = "WARNING";
LogLevel[LogLevel["NOTICE"] = 5] = "NOTICE";
LogLevel[LogLevel["INFO"] = 6] = "INFO";
LogLevel[LogLevel["DEBUG"] = 7] = "DEBUG"; /* debug-level messages */
})(LogLevel || (LogLevel = {}));
var LogManager = /** @class */ (function () {
function LogManager() {
/** 共通属性 基础字段 */
this.commonBaseData = {};
/** 共通属性 扩展字段 */
this.commonEtcData = {};
/** log级别限制,高于此级别的log不会显示 */
this.maxLogLevel = LogLevel.DEBUG;
/** pingback级别限制,高于此级别的pingback不会发出 */
this.maxPingbackLevel = LogLevel.DEBUG;
}
/**
* 本地日志
* @param msg
* @param level
*/
LogManager.prototype.log = function (msg, level) {
if (level === void 0) { level = LogLevel.DEBUG; }
if (!(level >= 0))
level = LogLevel.DEBUG;
if (level > this.maxLogLevel)
return;
if (null === msg || undefined === msg)
msg = "";
msg = "[h5][" + LogLevel[level] + "][" + new Date().toString() + "] " + msg;
// for console
if (typeof console !== "undefined" && console) {
if (console.error && level <= LogLevel.ERR) {
console.error(msg);
}
else {
console.log(msg);
}
}
// for external
var shell = core.getInject(Shell17);
shell.showlog(msg);
};
/**
* 远程日志
* @param userBaseData
* @param userEtcData
*/
LogManager.prototype.remoteLog = function (userBaseData, userEtcData) {
var shell = core.getInject(Shell17);
var baseData = {};
var etcData = {};
// 写入system props
baseData.server_type = environment17.server_type;
baseData.app = environment17.app;
baseData.native_version = environment17.nativeVersion;
baseData.uuid = environment17.uuid;
baseData.userid = environment17.userid;
baseData.studentId = environment17.studentId;
baseData.user_agent = navigator.userAgent;
// 写入 common data 和 user data
extendObject(baseData, this.commonBaseData, userBaseData);
extendObject(etcData, this.commonEtcData, userEtcData);
// 日志等级默认为debug
var level = baseData._lv;
if (isNaN(level) || level < 0 || level > LogLevel.DEBUG) {
level = LogLevel.DEBUG;
}
// 等级限制
if (level > this.maxPingbackLevel)
return;
baseData._lv = level;
// 序列化
try {
// etc需要是字符串格式
baseData["etc"] = JSON.stringify(etcData);
}
catch (e) {
this.log("[remote log] json stringify error: " + e, LogLevel.ERR);
// etc 序列化出错会发送一个错误日志
shell.log_b({
server_type: environment17.server_type,
app: environment17.app,
native_version: environment17.nativeVersion,
uuid: environment17.uuid,
userid: environment17.userid,
studentId: environment17.studentId,
_lv: LogLevel.ERR,
user_agent: navigator.userAgent,
module: "remoteLog",
op: "etc_stringify_error",
msg: "etc json stringify error",
});
}
shell.log_b(baseData);
};
/**
* 便捷打印远程日志
*
* @param {string} moduleName 模块名
* @param {string} opName op
* @param {*} [s0] s0
* @param {*} [s1] s1
* @param {*} [s2] s2
* @param {*} [extra] extra
* @memberof LogManager
*/
LogManager.prototype.easyLog = function (moduleName, opName, s0, s1, s2, extra) {
var ext = extra || {};
if (s0 != null)
ext.s0 = s0 + "";
if (s1 != null)
ext.s1 = s1 + "";
if (s2 != null)
ext.s2 = s2 + "";
this.remoteLog({
_lv: LogLevel.INFO,
module: moduleName,
op: opName,
err_code: "",
msg: "",
s0: s0 && s0 + "",
s1: s1 && s1 + "",
s2: s2 && s2 + "",
}, ext);
};
LogManager = tslib_1.__decorate([
Injectable
], LogManager);
return LogManager;
}());
export default LogManager;
/** 再额外导出一个单例 */
export var logManager = core.getInject(LogManager);