UNPKG

olympus-r-17plugins

Version:

A plugin of Olympus for 17zuoye.

155 lines (154 loc) 5.44 kB
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);