我在Apps脚本中有一个使用多个库的项目。该项目需要一个更复杂的记录器(记录级别,颜色编码),所以我写了一个输出到谷歌文档。如果我立即将输出打印到谷歌文档,当我分别在所有库中导入记录器时,一切都很好,花花公子。但是我注意到,在进行大量日志记录时,它需要的时间比没有日志要多得多。所以我正在寻找一种方法,在主脚本完成时,在最后一次写入所有输出。
这需要:
我的项目如下:
主要项目
这就是我使用当前记录器的方式:
var logger = new BetterLogger(/* logging level */);
logger.warn('this is a warning');
谢谢!
答案 0 :(得分:2)
您可以将日志消息写入Logger Library的ScriptDB实例,并添加.write()
方法,而不是在每条记录的消息(这是您的减速源)中写入文件。您的记录器将一次输出消息。您的记录器构造函数可以使用messageGroup
参数,该参数可以作为您要编写的行的唯一标识符。这也允许您使用不同的文件来记录输出。
当您将消息构建到正确的输出以写入文件时(不要单独编写每一行,批处理操作是您的朋友),您可能希望从ScriptDB中删除该消息。但是,它也可能是退回旧日志的好地方。
您的消息对象可能如下所示:
{
message: "My message",
color: "red",
messageGroup: "groupName",
level: 25,
timeStamp: new Date().getTime(), //ScriptDB won't take date objects natively
loggingFile: "Document Key"
}
查询看起来像:
var db = ScriptDb.getMyDb();
var results = db.query({messageGroup: "groupName"}).sortBy("timeStamp",db.NUMERIC);