AIWROK 日志打印方法完整集合
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(" " + msg);
}
function logWarn(msg) {
print.warn(" " + msg);
}
function logError(msg) {
print.err(" " + 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);
}
}
/**
* 输出对象属性
*/
function logObject(obj) {
printl("对象属性:");
for (var key in obj) {
if (obj.hasOwnProperty(key)) {
printl(" " + key + " = " + obj);
}
}
}
/**
* 条件日志输出
*/
function logIf(condition, msg) {
if (condition) {
printl("" + msg);
}
}
function demo_debugTips() {
printl("[案例] 调试输出技巧");
printl("--- 输出数组 ---");
logArray();
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(" " + msg);
break;
case LOG_LEVEL.INFO:
printl(" " + msg);
break;
case LOG_LEVEL.WARN:
print.warn(" " + msg);
break;
case LOG_LEVEL.ERROR:
print.err(" " + 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(" 写入日志文件失败: " + 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();
页:
[1]