 | |  |  | AIWROK 日志打印方法完整集合
- /**
- * AIWROK 日志打印方法完整集合
- * 包含所有日志输出、调试、计时相关方法,含完整案例演示
- */
- // ======================== 工具函数 ========================
- /**
- * 倒计时(秒)
- */
- function countdown(seconds) {
- for (var i = seconds; i >= 1; i--) {
- printl(" ⏳ " + i + " 秒后开始下一个演示...");
- sleep.millisecond(1000);
- }
- printl(" ▶ 开始!");
- }
- /**
- * 分隔线
- */
- function divider(title) {
- printl("");
- printl("================================================");
- printl(" " + title);
- printl("================================================");
- }
- // ======================== 1. printl 基础输出 ========================
- /**
- * printl - 输出日志信息到控制台
- * 方法签名: void printl(Object... args)
- * 支持多个参数,自动用空格分隔
- */
- function demo_printl() {
- printl("[案例] printl 基础输出");
- printl(" 直接输出字符串");
- var x = 100, y = 200;
- printl(" 多参数:", x, y);
- var token = "abc123";
- printl(" Token:", token);
- var data = {name: "test", value: 100};
- printl(" 对象:", data);
- printl(" 计算:", 100 + 200);
- }
- // ======================== 2. print.log 普通日志 ========================
- /**
- * print.log - 输出普通日志信息
- * 方法签名: void print.log(Object arg0)
- */
- function demo_printLog() {
- printl("[案例] print.log 普通日志");
- print.log("这是一条普通日志内容");
- print.log({key: "value", info: "示例对象"});
- }
- // ======================== 3. print.err 错误日志 ========================
- /**
- * print.err - 输出错误信息
- * 方法签名: void print.err(Object arg0)
- */
- function demo_printErr() {
- printl("[案例] print.err 错误日志");
- print.err("操作执行失败");
- print.err({code: 500, message: "服务器内部错误"});
- }
- // ======================== 4. print.warn 警告日志 ========================
- /**
- * print.warn - 输出警告信息
- * 方法签名: void print.warn(Object arg0)
- */
- function demo_printWarn() {
- printl("[案例] print.warn 警告日志");
- print.warn("这是一条需要关注的警告信息");
- print.warn({code: 201, tip: "资源即将耗尽"});
- }
- // ======================== 5. print.time/timeEnd 计时 ========================
- /**
- * print.time - 启动计时
- * print.timeEnd - 结束计时并返回时长(毫秒)
- */
- function demo_printTime() {
- printl("[案例] print.time / print.timeEnd 计时功能");
- print.time();
- var result = 0;
- for (var i = 0; i < 10000; i++) {
- result += i;
- }
- var costTime = print.timeEnd();
- printl(" 循环10000次累加,耗时: " + costTime + " 毫秒");
- printl(" 计算结果: " + result);
- }
- // ======================== 6. logWindow 日志窗口控制 ========================
- /**
- * logWindow 全套方法演示
- */
- function demo_logWindow() {
- printl("[案例] logWindow 日志窗口控制");
- // 设置窗口位置和大小
- logWindow.setPosition(0, 0);
- printl(" setPosition(0, 0) - 设置窗口位置");
- logWindow.setWidth(screen.getScreenWidth());
- printl(" setWidth(" + screen.getScreenWidth() + ") - 设置窗口宽度");
- logWindow.setHeight(300);
- printl(" setHeight(300) - 设置窗口高度");
- // 设置样式
- logWindow.setSize(14);
- printl(" setSize(14) - 设置字体大小");
- logWindow.setColor("#FFFFFF");
- printl(" setColor(#FFFFFF) - 设置字体颜色");
- logWindow.setAlpha(0.8);
- printl(" setAlpha(0.8) - 设置透明度");
- // 设置模式
- logWindow.showModel(0);
- printl(" showModel(0) - 显示全部日志");
- logWindow.setClickModel();
- printl(" setClickModel() - 设置可点击模式");
- logWindow.clear();
- printl(" clear() - 清空日志内容");
- }
- // ======================== 7. 自定义日志封装 ========================
- /**
- * 带时间戳的日志
- */
- function logWithTime(msg) {
- var now = new Date();
- var timeStr = now.getHours() + ":" + now.getMinutes() + ":" + now.getSeconds();
- printl("[" + timeStr + "] " + msg);
- }
- /**
- * 带级别的日志
- */
- function logInfo(msg) {
- printl("[INFO] " + msg);
- }
- function logWarn(msg) {
- print.warn("[WARN] " + msg);
- }
- function logError(msg) {
- print.err("[ERROR] " + msg);
- }
- /**
- * 带函数名的日志
- */
- function logWithFunc(funcName, msg) {
- printl("[" + funcName + "] " + msg);
- }
- function demo_customLog() {
- printl("[案例] 自定义日志封装");
- logWithTime("带时间戳的日志");
- logInfo("这是一条信息日志");
- logWarn("这是一条警告日志");
- logError("这是一条错误日志");
- logWithFunc("main", "带函数名的日志");
- }
- // ======================== 8. 错误捕获日志 ========================
- /**
- * 带错误捕获的日志
- */
- function safeExecute(func) {
- try {
- func();
- } catch (e) {
- print.err("执行出错: " + e.message);
- }
- }
- function demo_safeExecute() {
- printl("[案例] 错误捕获日志");
- safeExecute(function() {
- var result = 100 / 0;
- printl(" 结果: " + result);
- });
- safeExecute(function() {
- var obj = null;
- obj.toString();
- });
- }
- // ======================== 9. 调试输出技巧 ========================
- /**
- * 输出数组内容
- */
- function logArray(arr) {
- printl(" 数组长度: " + arr.length);
- for (var i = 0; i < arr.length; i++) {
- printl(" [" + i + "] = " + arr[i]);
- }
- }
- /**
- * 输出对象属性
- */
- function logObject(obj) {
- printl(" 对象属性:");
- for (var key in obj) {
- if (obj.hasOwnProperty(key)) {
- printl(" " + key + " = " + obj[key]);
- }
- }
- }
- /**
- * 条件日志输出
- */
- function logIf(condition, msg) {
- if (condition) {
- printl(" " + msg);
- }
- }
- function demo_debugTips() {
- printl("[案例] 调试输出技巧");
- printl(" --- 输出数组 ---");
- logArray([10, 20, 30, 40, 50]);
- printl(" --- 输出对象 ---");
- logObject({name: "test", age: 25, city: "北京"});
- printl(" --- 条件输出 ---");
- var debugMode = true;
- logIf(debugMode, "调试模式已开启");
- logIf(!debugMode, "调试模式已关闭(不会显示)");
- }
- // ======================== 10. 日志分级系统 ========================
- var LOG_LEVEL = {
- DEBUG: 0,
- INFO: 1,
- WARN: 2,
- ERROR: 3
- };
- var currentLogLevel = LOG_LEVEL.DEBUG;
- function setLogLevel(level) {
- currentLogLevel = level;
- }
- function log(level, msg) {
- if (level >= currentLogLevel) {
- switch (level) {
- case LOG_LEVEL.DEBUG:
- printl("[DEBUG] " + msg);
- break;
- case LOG_LEVEL.INFO:
- printl("[INFO] " + msg);
- break;
- case LOG_LEVEL.WARN:
- print.warn("[WARN] " + msg);
- break;
- case LOG_LEVEL.ERROR:
- print.err("[ERROR] " + msg);
- break;
- }
- }
- }
- function demo_logLevel() {
- printl("[案例] 日志分级系统");
- printl(" --- 级别: DEBUG(全部显示)---");
- setLogLevel(LOG_LEVEL.DEBUG);
- log(LOG_LEVEL.DEBUG, "DEBUG 消息");
- log(LOG_LEVEL.INFO, "INFO 消息");
- log(LOG_LEVEL.WARN, "WARN 消息");
- log(LOG_LEVEL.ERROR, "ERROR 消息");
- printl(" --- 级别: WARN(只显示 WARN 和 ERROR)---");
- setLogLevel(LOG_LEVEL.WARN);
- log(LOG_LEVEL.DEBUG, "DEBUG 消息(不显示)");
- log(LOG_LEVEL.INFO, "INFO 消息(不显示)");
- log(LOG_LEVEL.WARN, "WARN 消息");
- log(LOG_LEVEL.ERROR, "ERROR 消息");
- // 恢复 DEBUG 级别
- setLogLevel(LOG_LEVEL.DEBUG);
- }
- // ======================== 11. 文件日志 ========================
- /**
- * 输出日志到文件
- */
- function logToFile(filePath, msg) {
- var now = new Date();
- var timeStr = now.getFullYear() + "-" +
- (now.getMonth() + 1) + "-" +
- now.getDate() + " " +
- now.getHours() + ":" +
- now.getMinutes() + ":" +
- now.getSeconds();
-
- var logMsg = "[" + timeStr + "] " + msg + "\n";
-
- try {
- importClass(java.io.FileWriter);
- var fw = new java.io.FileWriter(filePath, true);
- fw.write(logMsg);
- fw.close();
- } catch (e) {
- printl("[ERROR] 写入日志文件失败: " + e.message);
- }
-
- printl(" " + logMsg.replace("\n", ""));
- }
- function demo_logToFile() {
- printl("[案例] 文件日志输出");
- var logPath = "/sdcard/app.log";
- logToFile(logPath, "应用启动");
- logToFile(logPath, "用户登录成功");
- logToFile(logPath, "执行任务完成");
- printl(" 日志已写入: " + logPath);
- }
- // ======================== 12. 性能测试 ========================
- function demo_performance() {
- printl("[案例] 性能测试 - 截图耗时统计");
- print.time();
- var totalTime = 0;
- for (var i = 0; i < 5; i++) {
- var t1 = java.lang.System.currentTimeMillis();
- var img = screen.screenShotFull();
- img.recycle();
- var t2 = java.lang.System.currentTimeMillis();
- var cost = t2 - t1;
- totalTime += cost;
- printl(" 第" + (i + 1) + "次截图: " + cost + " ms");
- }
- var totalCost = print.timeEnd();
- printl(" 5次截图总耗时: " + totalCost + " ms");
- printl(" 平均每次: " + Math.round(totalCost / 5) + " ms");
- }
- // ============================================================
- // 全部功能案例演示
- // ============================================================
- function demo() {
- printl("");
- printl("╔══════════════════════════════════════════════╗");
- printl("║ AIWROK 日志打印方法集 - 全部演示 ║");
- printl("║ 共 12 个功能,逐个演示 ║");
- printl("╚══════════════════════════════════════════════╝");
- // ---- 演示 1: printl 基础输出 ----
- divider("演示 1/12: printl 基础输出");
- demo_printl();
- countdown(2);
- // ---- 演示 2: print.log 普通日志 ----
- divider("演示 2/12: print.log 普通日志");
- demo_printLog();
- countdown(2);
- // ---- 演示 3: print.err 错误日志 ----
- divider("演示 3/12: print.err 错误日志");
- demo_printErr();
- countdown(2);
- // ---- 演示 4: print.warn 警告日志 ----
- divider("演示 4/12: print.warn 警告日志");
- demo_printWarn();
- countdown(2);
- // ---- 演示 5: print.time/timeEnd 计时 ----
- divider("演示 5/12: print.time / print.timeEnd 计时");
- demo_printTime();
- countdown(2);
- // ---- 演示 6: logWindow 日志窗口 ----
- divider("演示 6/12: logWindow 日志窗口控制");
- demo_logWindow();
- countdown(2);
- // ---- 演示 7: 自定义日志封装 ----
- divider("演示 7/12: 自定义日志封装");
- demo_customLog();
- countdown(2);
- // ---- 演示 8: 错误捕获日志 ----
- divider("演示 8/12: 错误捕获日志");
- demo_safeExecute();
- countdown(2);
- // ---- 演示 9: 调试输出技巧 ----
- divider("演示 9/12: 调试输出技巧");
- demo_debugTips();
- countdown(2);
- // ---- 演示 10: 日志分级系统 ----
- divider("演示 10/12: 日志分级系统");
- demo_logLevel();
- countdown(2);
- // ---- 演示 11: 文件日志 ----
- divider("演示 11/12: 文件日志输出");
- demo_logToFile();
- countdown(2);
- // ---- 演示 12: 性能测试 ----
- divider("演示 12/12: 性能测试");
- demo_performance();
- // ---- 总结 ----
- printl("");
- printl("╔══════════════════════════════════════════════╗");
- printl("║ 全部 12 个演示完成! ║");
- printl("╠══════════════════════════════════════════════╣");
- printl("║ 1. printl 基础日志输出 ║");
- printl("║ 2. print.log 普通日志 ║");
- printl("║ 3. print.err 错误日志 ║");
- printl("║ 4. print.warn 警告日志 ║");
- printl("║ 5. print.time 计时功能 ║");
- printl("║ 6. logWindow 日志窗口控制 ║");
- printl("║ 7. 自定义封装 带时间戳/级别/函数名 ║");
- printl("║ 8. safeExecute 错误捕获日志 ║");
- printl("║ 9. 调试技巧 数组/对象/条件输出 ║");
- printl("║ 10. 日志分级 DEBUG/INFO/WARN/ERROR ║");
- printl("║ 11. logToFile 文件日志输出 ║");
- printl("║ 12. 性能测试 截图耗时统计 ║");
- printl("╚══════════════════════════════════════════════╝");
- }
- // 直接运行演示
- demo();
复制代码
| |  | |  |
|