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
相关产品推荐
相关产品推荐

