B2B网络软件

标题: AIWROK 日志打印方法完整集合 [打印本页]

作者: YYPOST群发软件    时间: 1 小时前
标题: AIWROK 日志打印方法完整集合
AIWROK 日志打印方法完整集合
AIWROK 日志打印方法完整集合 B2B网络软件

AIWROK 日志打印方法完整集合 B2B网络软件

AIWROK 日志打印方法完整集合 B2B网络软件

  1. /**
  2. * AIWROK 日志打印方法完整集合
  3. * 包含所有日志输出、调试、计时相关方法,含完整案例演示
  4. */

  5. // ======================== 工具函数 ========================

  6. /**
  7. * 倒计时(秒)
  8. */
  9. function countdown(seconds) {
  10.     for (var i = seconds; i >= 1; i--) {
  11.         printl("  ⏳ " + i + " 秒后开始下一个演示...");
  12.         sleep.millisecond(1000);
  13.     }
  14.     printl("  ▶ 开始!");
  15. }

  16. /**
  17. * 分隔线
  18. */
  19. function divider(title) {
  20.     printl("");
  21.     printl("================================================");
  22.     printl("  " + title);
  23.     printl("================================================");
  24. }

  25. // ======================== 1. printl 基础输出 ========================

  26. /**
  27. * printl - 输出日志信息到控制台
  28. * 方法签名: void printl(Object... args)
  29. * 支持多个参数,自动用空格分隔
  30. */
  31. function demo_printl() {
  32.     printl("[案例] printl 基础输出");
  33.     printl("  直接输出字符串");
  34.     var x = 100, y = 200;
  35.     printl("  多参数:", x, y);
  36.     var token = "abc123";
  37.     printl("  Token:", token);
  38.     var data = {name: "test", value: 100};
  39.     printl("  对象:", data);
  40.     printl("  计算:", 100 + 200);
  41. }

  42. // ======================== 2. print.log 普通日志 ========================

  43. /**
  44. * print.log - 输出普通日志信息
  45. * 方法签名: void print.log(Object arg0)
  46. */
  47. function demo_printLog() {
  48.     printl("[案例] print.log 普通日志");
  49.     print.log("这是一条普通日志内容");
  50.     print.log({key: "value", info: "示例对象"});
  51. }

  52. // ======================== 3. print.err 错误日志 ========================

  53. /**
  54. * print.err - 输出错误信息
  55. * 方法签名: void print.err(Object arg0)
  56. */
  57. function demo_printErr() {
  58.     printl("[案例] print.err 错误日志");
  59.     print.err("操作执行失败");
  60.     print.err({code: 500, message: "服务器内部错误"});
  61. }

  62. // ======================== 4. print.warn 警告日志 ========================

  63. /**
  64. * print.warn - 输出警告信息
  65. * 方法签名: void print.warn(Object arg0)
  66. */
  67. function demo_printWarn() {
  68.     printl("[案例] print.warn 警告日志");
  69.     print.warn("这是一条需要关注的警告信息");
  70.     print.warn({code: 201, tip: "资源即将耗尽"});
  71. }

  72. // ======================== 5. print.time/timeEnd 计时 ========================

  73. /**
  74. * print.time - 启动计时
  75. * print.timeEnd - 结束计时并返回时长(毫秒)
  76. */
  77. function demo_printTime() {
  78.     printl("[案例] print.time / print.timeEnd 计时功能");
  79.     print.time();
  80.     var result = 0;
  81.     for (var i = 0; i < 10000; i++) {
  82.         result += i;
  83.     }
  84.     var costTime = print.timeEnd();
  85.     printl("  循环10000次累加,耗时: " + costTime + " 毫秒");
  86.     printl("  计算结果: " + result);
  87. }

  88. // ======================== 6. logWindow 日志窗口控制 ========================

  89. /**
  90. * logWindow 全套方法演示
  91. */
  92. function demo_logWindow() {
  93.     printl("[案例] logWindow 日志窗口控制");

  94.     // 设置窗口位置和大小
  95.     logWindow.setPosition(0, 0);
  96.     printl("  setPosition(0, 0) - 设置窗口位置");

  97.     logWindow.setWidth(screen.getScreenWidth());
  98.     printl("  setWidth(" + screen.getScreenWidth() + ") - 设置窗口宽度");

  99.     logWindow.setHeight(300);
  100.     printl("  setHeight(300) - 设置窗口高度");

  101.     // 设置样式
  102.     logWindow.setSize(14);
  103.     printl("  setSize(14) - 设置字体大小");

  104.     logWindow.setColor("#FFFFFF");
  105.     printl("  setColor(#FFFFFF) - 设置字体颜色");

  106.     logWindow.setAlpha(0.8);
  107.     printl("  setAlpha(0.8) - 设置透明度");

  108.     // 设置模式
  109.     logWindow.showModel(0);
  110.     printl("  showModel(0) - 显示全部日志");

  111.     logWindow.setClickModel();
  112.     printl("  setClickModel() - 设置可点击模式");

  113.     logWindow.clear();
  114.     printl("  clear() - 清空日志内容");
  115. }

  116. // ======================== 7. 自定义日志封装 ========================

  117. /**
  118. * 带时间戳的日志
  119. */
  120. function logWithTime(msg) {
  121.     var now = new Date();
  122.     var timeStr = now.getHours() + ":" + now.getMinutes() + ":" + now.getSeconds();
  123.     printl("[" + timeStr + "] " + msg);
  124. }

  125. /**
  126. * 带级别的日志
  127. */
  128. function logInfo(msg) {
  129.     printl("[INFO] " + msg);
  130. }

  131. function logWarn(msg) {
  132.     print.warn("[WARN] " + msg);
  133. }

  134. function logError(msg) {
  135.     print.err("[ERROR] " + msg);
  136. }

  137. /**
  138. * 带函数名的日志
  139. */
  140. function logWithFunc(funcName, msg) {
  141.     printl("[" + funcName + "] " + msg);
  142. }

  143. function demo_customLog() {
  144.     printl("[案例] 自定义日志封装");
  145.     logWithTime("带时间戳的日志");
  146.     logInfo("这是一条信息日志");
  147.     logWarn("这是一条警告日志");
  148.     logError("这是一条错误日志");
  149.     logWithFunc("main", "带函数名的日志");
  150. }

  151. // ======================== 8. 错误捕获日志 ========================

  152. /**
  153. * 带错误捕获的日志
  154. */
  155. function safeExecute(func) {
  156.     try {
  157.         func();
  158.     } catch (e) {
  159.         print.err("执行出错: " + e.message);
  160.     }
  161. }

  162. function demo_safeExecute() {
  163.     printl("[案例] 错误捕获日志");
  164.     safeExecute(function() {
  165.         var result = 100 / 0;
  166.         printl("  结果: " + result);
  167.     });
  168.     safeExecute(function() {
  169.         var obj = null;
  170.         obj.toString();
  171.     });
  172. }

  173. // ======================== 9. 调试输出技巧 ========================

  174. /**
  175. * 输出数组内容
  176. */
  177. function logArray(arr) {
  178.     printl("  数组长度: " + arr.length);
  179.     for (var i = 0; i < arr.length; i++) {
  180.         printl("    [" + i + "] = " + arr[i]);
  181.     }
  182. }

  183. /**
  184. * 输出对象属性
  185. */
  186. function logObject(obj) {
  187.     printl("  对象属性:");
  188.     for (var key in obj) {
  189.         if (obj.hasOwnProperty(key)) {
  190.             printl("    " + key + " = " + obj[key]);
  191.         }
  192.     }
  193. }

  194. /**
  195. * 条件日志输出
  196. */
  197. function logIf(condition, msg) {
  198.     if (condition) {
  199.         printl("  " + msg);
  200.     }
  201. }

  202. function demo_debugTips() {
  203.     printl("[案例] 调试输出技巧");

  204.     printl("  --- 输出数组 ---");
  205.     logArray([10, 20, 30, 40, 50]);

  206.     printl("  --- 输出对象 ---");
  207.     logObject({name: "test", age: 25, city: "北京"});

  208.     printl("  --- 条件输出 ---");
  209.     var debugMode = true;
  210.     logIf(debugMode, "调试模式已开启");
  211.     logIf(!debugMode, "调试模式已关闭(不会显示)");
  212. }

  213. // ======================== 10. 日志分级系统 ========================

  214. var LOG_LEVEL = {
  215.     DEBUG: 0,
  216.     INFO: 1,
  217.     WARN: 2,
  218.     ERROR: 3
  219. };

  220. var currentLogLevel = LOG_LEVEL.DEBUG;

  221. function setLogLevel(level) {
  222.     currentLogLevel = level;
  223. }

  224. function log(level, msg) {
  225.     if (level >= currentLogLevel) {
  226.         switch (level) {
  227.             case LOG_LEVEL.DEBUG:
  228.                 printl("[DEBUG] " + msg);
  229.                 break;
  230.             case LOG_LEVEL.INFO:
  231.                 printl("[INFO] " + msg);
  232.                 break;
  233.             case LOG_LEVEL.WARN:
  234.                 print.warn("[WARN] " + msg);
  235.                 break;
  236.             case LOG_LEVEL.ERROR:
  237.                 print.err("[ERROR] " + msg);
  238.                 break;
  239.         }
  240.     }
  241. }

  242. function demo_logLevel() {
  243.     printl("[案例] 日志分级系统");

  244.     printl("  --- 级别: DEBUG(全部显示)---");
  245.     setLogLevel(LOG_LEVEL.DEBUG);
  246.     log(LOG_LEVEL.DEBUG, "DEBUG 消息");
  247.     log(LOG_LEVEL.INFO, "INFO 消息");
  248.     log(LOG_LEVEL.WARN, "WARN 消息");
  249.     log(LOG_LEVEL.ERROR, "ERROR 消息");

  250.     printl("  --- 级别: WARN(只显示 WARN 和 ERROR)---");
  251.     setLogLevel(LOG_LEVEL.WARN);
  252.     log(LOG_LEVEL.DEBUG, "DEBUG 消息(不显示)");
  253.     log(LOG_LEVEL.INFO, "INFO 消息(不显示)");
  254.     log(LOG_LEVEL.WARN, "WARN 消息");
  255.     log(LOG_LEVEL.ERROR, "ERROR 消息");

  256.     // 恢复 DEBUG 级别
  257.     setLogLevel(LOG_LEVEL.DEBUG);
  258. }

  259. // ======================== 11. 文件日志 ========================

  260. /**
  261. * 输出日志到文件
  262. */
  263. function logToFile(filePath, msg) {
  264.     var now = new Date();
  265.     var timeStr = now.getFullYear() + "-" +
  266.                   (now.getMonth() + 1) + "-" +
  267.                   now.getDate() + " " +
  268.                   now.getHours() + ":" +
  269.                   now.getMinutes() + ":" +
  270.                   now.getSeconds();
  271.    
  272.     var logMsg = "[" + timeStr + "] " + msg + "\n";
  273.    
  274.     try {
  275.         importClass(java.io.FileWriter);
  276.         var fw = new java.io.FileWriter(filePath, true);
  277.         fw.write(logMsg);
  278.         fw.close();
  279.     } catch (e) {
  280.         printl("[ERROR] 写入日志文件失败: " + e.message);
  281.     }
  282.    
  283.     printl("  " + logMsg.replace("\n", ""));
  284. }

  285. function demo_logToFile() {
  286.     printl("[案例] 文件日志输出");
  287.     var logPath = "/sdcard/app.log";
  288.     logToFile(logPath, "应用启动");
  289.     logToFile(logPath, "用户登录成功");
  290.     logToFile(logPath, "执行任务完成");
  291.     printl("  日志已写入: " + logPath);
  292. }

  293. // ======================== 12. 性能测试 ========================

  294. function demo_performance() {
  295.     printl("[案例] 性能测试 - 截图耗时统计");
  296.     print.time();
  297.     var totalTime = 0;
  298.     for (var i = 0; i < 5; i++) {
  299.         var t1 = java.lang.System.currentTimeMillis();
  300.         var img = screen.screenShotFull();
  301.         img.recycle();
  302.         var t2 = java.lang.System.currentTimeMillis();
  303.         var cost = t2 - t1;
  304.         totalTime += cost;
  305.         printl("  第" + (i + 1) + "次截图: " + cost + " ms");
  306.     }
  307.     var totalCost = print.timeEnd();
  308.     printl("  5次截图总耗时: " + totalCost + " ms");
  309.     printl("  平均每次: " + Math.round(totalCost / 5) + " ms");
  310. }


  311. // ============================================================
  312. //                    全部功能案例演示
  313. // ============================================================

  314. function demo() {
  315.     printl("");
  316.     printl("╔══════════════════════════════════════════════╗");
  317.     printl("║     AIWROK 日志打印方法集 - 全部演示         ║");
  318.     printl("║          共 12 个功能,逐个演示              ║");
  319.     printl("╚══════════════════════════════════════════════╝");

  320.     // ---- 演示 1: printl 基础输出 ----
  321.     divider("演示 1/12: printl 基础输出");
  322.     demo_printl();
  323.     countdown(2);

  324.     // ---- 演示 2: print.log 普通日志 ----
  325.     divider("演示 2/12: print.log 普通日志");
  326.     demo_printLog();
  327.     countdown(2);

  328.     // ---- 演示 3: print.err 错误日志 ----
  329.     divider("演示 3/12: print.err 错误日志");
  330.     demo_printErr();
  331.     countdown(2);

  332.     // ---- 演示 4: print.warn 警告日志 ----
  333.     divider("演示 4/12: print.warn 警告日志");
  334.     demo_printWarn();
  335.     countdown(2);

  336.     // ---- 演示 5: print.time/timeEnd 计时 ----
  337.     divider("演示 5/12: print.time / print.timeEnd 计时");
  338.     demo_printTime();
  339.     countdown(2);

  340.     // ---- 演示 6: logWindow 日志窗口 ----
  341.     divider("演示 6/12: logWindow 日志窗口控制");
  342.     demo_logWindow();
  343.     countdown(2);

  344.     // ---- 演示 7: 自定义日志封装 ----
  345.     divider("演示 7/12: 自定义日志封装");
  346.     demo_customLog();
  347.     countdown(2);

  348.     // ---- 演示 8: 错误捕获日志 ----
  349.     divider("演示 8/12: 错误捕获日志");
  350.     demo_safeExecute();
  351.     countdown(2);

  352.     // ---- 演示 9: 调试输出技巧 ----
  353.     divider("演示 9/12: 调试输出技巧");
  354.     demo_debugTips();
  355.     countdown(2);

  356.     // ---- 演示 10: 日志分级系统 ----
  357.     divider("演示 10/12: 日志分级系统");
  358.     demo_logLevel();
  359.     countdown(2);

  360.     // ---- 演示 11: 文件日志 ----
  361.     divider("演示 11/12: 文件日志输出");
  362.     demo_logToFile();
  363.     countdown(2);

  364.     // ---- 演示 12: 性能测试 ----
  365.     divider("演示 12/12: 性能测试");
  366.     demo_performance();

  367.     // ---- 总结 ----
  368.     printl("");
  369.     printl("╔══════════════════════════════════════════════╗");
  370.     printl("║              全部 12 个演示完成!             ║");
  371.     printl("╠══════════════════════════════════════════════╣");
  372.     printl("║ 1.  printl            基础日志输出           ║");
  373.     printl("║ 2.  print.log         普通日志               ║");
  374.     printl("║ 3.  print.err         错误日志               ║");
  375.     printl("║ 4.  print.warn        警告日志               ║");
  376.     printl("║ 5.  print.time        计时功能               ║");
  377.     printl("║ 6.  logWindow         日志窗口控制           ║");
  378.     printl("║ 7.  自定义封装        带时间戳/级别/函数名   ║");
  379.     printl("║ 8.  safeExecute       错误捕获日志           ║");
  380.     printl("║ 9.  调试技巧          数组/对象/条件输出     ║");
  381.     printl("║ 10. 日志分级          DEBUG/INFO/WARN/ERROR  ║");
  382.     printl("║ 11. logToFile         文件日志输出           ║");
  383.     printl("║ 12. 性能测试          截图耗时统计           ║");
  384.     printl("╚══════════════════════════════════════════════╝");
  385. }

  386. // 直接运行演示
  387. demo();
复制代码







欢迎光临 B2B网络软件 (http://bbs.niubt.cn/) Powered by Discuz! X3.2