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

No output from Logger.log(...) in Google Apps Script .gs file - what's wrong?

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

function uploadFiles(form) {
  Logger.log("uploadFiles() Hello?");
  ...
}

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

答案:

使用 Logger.log() 写入的 Google Apps 脚本日志在每次脚本为 运行 时都会被清除,因此在多次调用后仅最将显示最近的通话记录。

避免和正确记录:

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

Apps Script provides three different mechanisms for logging:

  • The built-in Apps Script Logger, which is lightweight but persists only for a short time.
  • The Stackdriver Logging interface in the Developer Console, which provides logs that persist for many days after their creation.
  • The Stackdriver Error Reporting interface in the Developer Console, which collects and records errors that occur while your script is running.

Stackdriver 日志记录:

当您需要比 运行 更长时间的日志记录时,首选 Stackdriver 日志。这些附加到与 Apps 脚本项目相关联的 GCP 项目,可以在 Apps Script dashboard 中找到简化版本。异常日志记录也可以通过 Stackdriver 日志完成。可以使用 console.log() 方法而不是 Logger.log().

方法写入此日志

Stackdriver 错误报告:

您可以在 GCP console 中查看您的 Stackdriver 错误报告。

参考文献:


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


这似乎是一个错误!

Logger.log() 函数应该记录传递给该方法的所有内容,并且无论在一次调用中 运行 有多少函数,调用中所有函数的所有日志都应该在记录器。 异常是如果有太多Logger.log()调用,并且日志被t运行分类。

如上所述,Google 的 Issue Tracker 上已经有一份报告详细说明了同类行为:

Google 似乎知道这个问题,但如果它导致问题,你可以提交你自己的错误 here

您还可以点击上述页面左上角问题编号旁边的 ☆,让 Google 知道更多人遇到此问题,因此更有可能更快地看到它。

有同样的问题 - 我还没有尝试过 对我有帮助的最好的事情是在本地某个地方保存你的 .gs 文件, 永远删除绑定的脚本项目, 创建一个新文件并手动添加这些文件