有没有SDK?希望添加Log功能

功能建议 · 36 次浏览
mttcode 创建于 9天2小时前

目前如果要打印必须要使用quicker.content.SetVarValue("info", info),然后动作里判断info是否为空再输出,很麻烦而且功能受限。希望可以增加一个函数调用提示框。


回复内容
CL 9天1小时前
#1

目前没有这方面的功能。以下信息请参考:

目前没有专门的 quicker.log() 接口。前面直接调用 AppHelper 的方案未经运行验证,不应作为现有版本可用方案推荐。

不改 Quicker,目前可以这样做:

1. 只用于调试:写变量就会留下日志

在动作中预先定义文本变量 info,Python 里封装:

def log(message):
    quicker.context.SetVarValue("info", str(message))

log("开始处理")
log("已处理第 1 项")
log("处理完成")

在调试模式下,每次 SetVarValue 都会记录一条“脚本写入”日志,不需要后面再添加判断或输出步骤。变量最终只保留最后的值,但日志会记录每次写入。

这一行为在当前源码和 1.x 参考源码里都有。

2. 正常运行也要显示提示:封装一个子程序

在动作内创建子程序 日志提示

  • 定义文本输入参数 message
  • 添加「提示消息」步骤,显示 message

Python 中封装调用:

from System import String, Object
from System.Collections.Generic import Dictionary

def log(message):
    args = Dictionary[String, Object]()
    args["message"] = str(message)
    quicker.context.RunSp("日志提示", args)

log("开始处理")
log("处理完成")

这样可以在 Python 执行过程中调用提示,无需等整个脚本结束后再输出。这里显式使用 .NET 字典,避免 Python dict 的重载转换问题;具体示例尚未实机验证。

3. 要长期保存:使用 Python 自带的 logging

直接记录到文件,不依赖 Quicker 接口:

import logging
import os
import tempfile

logger = logging.getLogger("my_quicker_action")
logger.setLevel(logging.INFO)

if not logger.handlers:
    handler = logging.FileHandler(
        os.path.join(tempfile.gettempdir(), "quicker-python.log"),
        encoding="utf-8"
    )
    handler.setFormatter(logging.Formatter("%(asctime)s %(message)s"))
    logger.addHandler(handler)

logger.info("开始处理")

对应截图中的需求,调试看信息用方案 1,运行中弹提示用方案 2

回复主贴