Google Apps Script .gs 文件中的 Logger.log(...) 没有输出 - 怎么了?

jef*_*eff 3 google-apps-script google-apps-script-editor

我有一堆服务器端代码,我使用 Logger.log("message") 从中记录。但是一个 .gs 文件不会记录!即使有这么简单的声明:

function uploadFiles(form) {
  Logger.log("uploadFiles() Hello?");
  ...
}
Run Code Online (Sandbox Code Playgroud)

如此简单,但我得到了 zilch。有谁知道为什么我无法从一个 .gs 文件中获得任何日志输出而同一项目中的其他人可以正常记录的原因?

Raf*_*rmo 5

回答:

Logger.log()每次运行脚本时都会清除写入的 Google Apps 脚本日志,因此在多次调用后,只会显示最近的调用日志。

避免和正确记录:

除了可以使用 写入的常规日志之外Logger.log(),Google Apps 脚本还有另外两种日志记录方法 - Stackdriver 日志记录和 Stackdriver 错误报告。根据 Apps 脚本文档:

Apps 脚本提供了三种不同的日志记录机制:

  • 内置的 Apps 脚本记录器,它是轻量级的,但只持续很短的时间。

  • 开发者控制台中的 Stackdriver Logging 界面,提供在创建后保留多天的日志。

  • 开发者控制台中的 Stackdriver 错误报告界面,用于收集和记录脚本运行时发生的错误。

Stackdriver 日志记录:

当您需要比每次运行持续更长时间的日志记录时,首选 Stackdriver 日志。这些附加到与 Apps 脚本项目关联的 GCP 项目,并且可以在Apps 脚本仪表板 中找到简化版本。异常记录也可以通过 Stackdriver 日志完成。可以使用console.log()方法而不是来写入此日志Logger.log()

Stackdriver 错误报告:

您可以在GCP 控制台中查看 Stackdriver 错误报告。

参考:


此答案是在其他信息曝光后更新的。由于 Google Apps Script 的 Logging 方法存在已知问题,因此原始答案保留在下方。


这似乎是一个错误!

Logger.log()函数应该记录传递给该方法的所有内容,并且无论在单个调用中运行了多少函数,调用中所有函数的所有日志都应该在记录器中可见。该唯一的例外是,如果有太多的Logger.log()电话,日志将被截断。

如上所述,已经有一份关于 Google 的问题跟踪器的报告,其中详细说明了相同的行为:

谷歌似乎知道这个问题,但如果它导致问题,你可以在这里提交你自己的错误。

你也可以打?在上述页面左上角的问题编号旁边,它让 Google 知道更多人正在遇到此问题,因此更有可能更快地看到它。

我希望这对你有帮助!