You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

无控制台运行的Cinnamon小程序JS代码如何输出日志到文件或控制台

Cinnamon小程序开发日志输出方案

方案1:输出到系统日志(实时控制台查看)

  • Cinnamon的cjs运行环境全局自带log()方法,不需要引入任何额外模块,直接在业务代码里调用即可,支持传入任意类型参数(字符串、对象、数组、错误实例都可以),运行时会自动做序列化处理,示例:log("当前菜单加载状态:", loadStatus, menuList)
  • 实时查看日志的方式:打开任意终端执行journalctl /usr/bin/cinnamon -f,就能看到滚动输出的实时日志流,和本地控制台效果完全一致,除了你自己打的日志,还能看到Cinnamon运行时的原生报错、完整调用栈,开发时全程开着这个终端窗口就行。
  • 如果需要专门打印错误信息,用全局自带的logError(err, "自定义标记")方法即可,输出的内容会带完整调用链路,排查异常比普通log方便很多。

方案2:输出到自定义日志文件

如果需要把日志单独归档、不跟系统日志混在一起,可以直接用内置的GLib模块实现文件写入,不需要装第三方依赖:

  • 先在代码顶部引入GLib模块:const GLib = imports.gi.GLib;
  • 封装一个通用的日志写入方法,参考代码如下:
// 日志存在用户家目录下,可自行修改路径
const CUSTOM_LOG_PATH = `${GLib.get_home_dir()}/my_cinnamon_applet.log`;

function appLog(...args) {
    // 拼接带时间戳的日志内容
    const logContent = `[${new Date().toLocaleString()}] ${args.join(' ')}\n`;
    // 追加写入文件,文件不存在时自动创建
    let oldContent = '';
    if (GLib.file_test(CUSTOM_LOG_PATH, GLib.FileTest.EXISTS)) {
        oldContent = GLib.file_get_contents(CUSTOM_LOG_PATH)[1];
    }
    GLib.file_set_contents(CUSTOM_LOG_PATH, oldContent + logContent, -1);
}
  • 调用时直接传任意参数即可,比如appLog("用户点击按钮", clickEventData),日志会写入你指定的路径,也可以在终端执行tail -f ~/my_cinnamon_applet.log实时查看新增日志。

注意:cjs运行环境默认没有挂载console对象,不要直接写console.log(),会直接抛出异常中断小程序运行。每次修改代码后,记得在Cinnamon系统设置的疑难解答选项里重启Cinnamon,新的日志逻辑才会生效。

内容的提问来源于stack exchange,提问作者user1658543

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.28 17:57:34