0.0.7 • Published 6 months ago
epg-devlog v0.0.7
epg本地调试日志上报服务
1. 概述
在开发epg项目过程中,我们之前希望看到程序运行的情况,会在界面创建一个div标签浮在界面最顶层,用于显示调试信息。但是随着项目的发展,这个调试信息越来越复杂,需要显示的信息越来越多,导致这个div标签越来越大,查看调试信息变的更加困难。因此,我们决定将调试信息输出到服务器,通过浏览器访问服务器查看调试信息。
2. 介绍
epg-devlog是集前后端服务为一体的日志服务,通过浏览器访问本地启动的服务器地址,可以查看上报日志。并对可以对上报的数据进行筛选、排序、搜索、标记等操作。
3. 使用
3.1. 环境准备
- mySQL 8.0+
- node.js V20+
3.2. 下载代码
- npm i epg-devlog -g
3.3. 指令执行
# 配置mysql基础信息,按提示根据你自己本地的mysql进行配置
epg-devlog-setMysqlConfig
mysql配置成功后,注意配置的数据库需确保你本地mysql已手动创建,而数据库的表则不用,epg-devlog会自动创建。
# 启动服务
epg-devlog start
3.4. 使用
在epg项目中,定义一个devLog方法,具体根据项目框架来定义,如某历史项目中:
/** 本地epg-devtool服务 */
var MOINTOR_BASE_URL = 'https://5qxjve-ip-58-42-244-88.tunnelmole.net' // 本地调试内网穿透地址
var notSupportReportStbs = ["CM201-1-CH"]
var openLocalDev = true; // 是否开启本地调试
/**
* 字符串化数据 补充JSON.stringify
* @param {object} data 需要stringify的数据
* @returns
*/
var stringifyData = function (data) {
return JSON.stringify(data, function (_key, value) {
if (typeof value === "function") {
return value.toString();
} else if (typeof value === "undefined") {
return "undefined";
} else if (value === null) {
return "null";
} else {
return value;
}
})
}
/**
* 测试环境本地调试日志上报
* @param {object | string} data 上报的数据
* @param {string?} tip 提示信息
* @param {string?} type 上报类型 info: 一般打印信息 warn:警告 error:报错 debug:调试
*/
var devLog = function (data, tip, type) {
if (!openLocalDev) return;
if (MOINTOR_BASE_URL) {
data === undefined && (data = "undefined");
data === null && (data = "null");
var reportData = { reportJson: data, tip: tip || "", type: type || 'info' };
XEpg.Util.ajaxPostByJson(MOINTOR_BASE_URL + "/reportEpgLog", stringifyData(reportData), function(){})
} else if (log_view && data) {
var logType = {
info: 'i',
warn: 'w',
error: 'e',
}
log_view(logType[type] || 'i', typeof data === 'string' ? data : stringifyData(data));
}
}
日志上报成功后,可在浏览器上打开本地上报地址,便可对收集到的数据进行查看,但目前对于一些盒子存在异常,本服务更适合用于对数据的抓取,而异常盒子则建议使用log_view进行日志上报。 上报的接口为:/reportEpgLog 请求方式: post 入参: - reportJson : 上报的数据 - tip : 提示信息 - type : 上报类型 info: 一般打印信息 warn:警告 error:报错 debug:调试 - isMarked : 是否标记