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

BetterLog在Google Apps Script控制台重复输出两次日志问题咨询

BetterLog控制台日志重复打印问题说明

这个现象不属于配置错误,是BetterLog库的默认逻辑导致的冗余输出,无需修改库源码,通过简单配置即可解决。

重复原因

两条重复日志的输出来源完全独立:

  • 带完整时间戳、进程ID、日志级别前缀的条目,是BetterLog主动调用GAS新版console接口输出的格式化日志
  • 仅包含纯日志内容、无额外前缀的条目,是BetterLog默认会把日志同时转发给GAS旧版原生Logger对象,原生Logger的内容会自动同步到控制台,最终形成重复输出。

典型的重复日志样式如下:

11:23:10 AM Info 2022-06-13 11:23:10:821 +0300 001169 INFO doPost called
11:23:10 AM Info doPost called
11:23:11 AM Info 2022-06-13 11:23:11:289 +0300 001637 INFO doPost - contents: {"message":{"chat":{"id":123},"text":"/test"}}; runFromChatId: 123; text: /test
11:23:11 AM Info doPost - contents: {"message":{"chat":{"id":123},"text":"/test"}}; runFromChatId: 123; text: /test
11:23:11 AM Info 2022-06-13 11:23:11:599 +0300 001947 INFO doPost - not yet validated runFromChatId: 123
11:23:11 AM Info doPost - not yet validated runFromChatId: 123
11:23:11 AM Info 2022-06-13 11:23:11:893 +0300 002243 INFO doPost - authFailedAmount: 0
11:23:11 AM Info doPost - authFailedAmount: 0
...

对应控制台截图:
控制台重复输出截图

解决方法

官方推荐的标准配置缺少关闭原生Logger转发的配置项,在初始化BetterLog后,调用内置方法关闭转发即可消除重复输出,参考代码:

// 初始化绑定表格的BetterLog实例
Logger = BetterLog.useSpreadsheet('your-spreadsheet-key-goes-here'); 
// 关闭向原生Logger的转发,消除重复输出
Logger.setAlsoOutputToNativeLogger(false);

// 后续正常调用log方法即可,日志会同时写入绑定表格、在控制台输出单条格式化日志
Logger.log("That's all you need to do");

如果不想覆写全局原生Logger对象,也可以单独声明BetterLog实例使用,避免全局对象冲突:

// 初始化独立的BetterLog实例,不修改全局Logger
const customLogger = BetterLog.useSpreadsheet('your-spreadsheet-key-goes-here');
customLogger.setAlsoOutputToNativeLogger(false);

// 使用独立实例打日志
customLogger.log("That's all you need to do");

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.30 23:42:28