Stay organized with collections
Save and categorize content based on your preferences.
Logger
This class allows the developer to write to the Execution log and to Google Cloud Logging if the script is associated with
a standard
Cloud Project. This class is preferred for structured logging and jsonPayload support
in Cloud Logging. For time-based logging, use console.
Writes a formatted string to the logging console, using the format and values provided.
Detailed documentation
clear()
Clears the log.
getLog()
Returns a complete list of messages in the current log. This method can be used to save or
email the entire log output generated during script execution.
// Generate a log, then email it to the person who ran the script.constfiles=DriveApp.getFiles();while(files.hasNext()){Logger.log(files.next().getName());}constrecipient=Session.getActiveUser().getEmail();constsubject='A list of files in your Google Drive';constbody=Logger.getLog();MailApp.sendEmail(recipient,subject,body);
Return
String — the log from the logging console
log(data)
Writes the data to the log. The data can be a string, a JavaScript object, or an object with a
message property.
Logger.log("my log message");// Info my logmessageLogger.log({key:"value"});// Info {key=value}Logger.log({message:"my log message",data:{key:"value"}})// Info my logmessage
When passing an object, if the object contains a message property, that property is
used as the log message. Otherwise, the toString() method is called to convert the
object to a string. All other properties which are JSON serializable are included as part of
the jsonPayload in the LogEntry, similar to the example below:
Writes a formatted string to the logging console, using the format and values provided. The
string can include multiple %s placeholders, which are replaced with corresponding
values from the list of arguments, converted to strings.
// Log the number of Google Groups you belong to.constgroups=GroupsApp.getGroups();Logger.log('You are a member of %s Google Groups.',groups.length);
Parameters
Name
Type
Description
format
String
a format string that contains as many instances of %s as the number of
values arguments
values
Object...
a variable number of values to insert into the format string
[[["Easy to understand","easyToUnderstand","thumb-up"],["Solved my problem","solvedMyProblem","thumb-up"],["Other","otherUp","thumb-up"]],[["Missing the information I need","missingTheInformationINeed","thumb-down"],["Too complicated / too many steps","tooComplicatedTooManySteps","thumb-down"],["Out of date","outOfDate","thumb-down"],["Samples / code issue","samplesCodeIssue","thumb-down"],["Other","otherDown","thumb-down"]],["Last updated 2024-12-02 UTC."],[[["\u003cp\u003eThe \u003ccode\u003eLogger\u003c/code\u003e class enables developers to write text to debugging logs for script analysis and troubleshooting.\u003c/p\u003e\n"],["\u003cp\u003eIt provides methods to clear the log, retrieve the entire log as a string, and write formatted or unformatted messages to the log.\u003c/p\u003e\n"],["\u003cp\u003eLogged output can be viewed within the Apps Script editor using "View > Show logs" and utilized for debugging purposes.\u003c/p\u003e\n"],["\u003cp\u003eThe \u003ccode\u003egetLog()\u003c/code\u003e method allows for capturing the log content, which can then be used for saving, emailing, or further processing.\u003c/p\u003e\n"],["\u003cp\u003eDevelopers can leverage format strings and values to create structured log messages using the \u003ccode\u003elog(format, values)\u003c/code\u003e method.\u003c/p\u003e\n"]]],[],null,["Logger\n\nThis class allows the developer to write to the Execution log and to [Google Cloud Logging](https://cloud.google.com/logging) if the script is associated with\na [standard\nCloud Project](https://developers.google.com/apps-script/guides/cloud-platform-projects#standard). This class is preferred for structured logging and `json``Payload` support\nin Cloud Logging. For time-based logging, use [console](/apps-script/reference/base/console). \n\nMethods\n\n| Method | Return type | Brief description |\n|-----------------------------------------------|-------------|-----------------------------------------------------------------------------------------|\n| [clear()](#clear()) | `void` | Clears the log. |\n| [getLog()](#getLog()) | `String` | Returns a complete list of messages in the current log. |\n| [log(data)](#log(Object)) | [Logger](#) | Writes the data to the log. |\n| [log(format, values)](#log(String,Object...)) | [Logger](#) | Writes a formatted string to the logging console, using the format and values provided. |\n\nDetailed documentation \n\n`clear()` \nClears the log.\n\n*** ** * ** ***\n\n`get``Log()` \nReturns a complete list of messages in the current log. This method can be used to save or\nemail the entire log output generated during script execution.\n\n```javascript\n// Generate a log, then email it to the person who ran the script.\nconst files = DriveApp.getFiles();\nwhile (files.hasNext()) {\n Logger.log(files.next().getName());\n}\nconst recipient = Session.getActiveUser().getEmail();\nconst subject = 'A list of files in your Google Drive';\nconst body = Logger.getLog();\nMailApp.sendEmail(recipient, subject, body);\n```\n\nReturn\n\n\n`String` --- the log from the logging console\n\n*** ** * ** ***\n\n`log(data)` \nWrites the data to the log. The data can be a string, a JavaScript object, or an object with a\n`message` property.\n\n```javascript\nLogger.log(\"my log message\");\n// Info my logmessage\nLogger.log({ key: \"value\" });\n// Info {key=value}\nLogger.log({ message: \"my log message\", data: { key: \"value\" } })\n// Info my logmessage\n```\n\nWhen passing an object, if the object contains a `message` property, that property is\nused as the log message. Otherwise, the `to``String()` method is called to convert the\nobject to a string. All other properties which are JSON serializable are included as part of\nthe `json``Payload` in the [`Log``Entry`](https://cloud.google.com/logging/docs/reference/v2/rest/v2/LogEntry), similar to the example below:\n\n```transact-sql\n{\n \"insertId\": \"w5eib...\",\n \"jsonPayload\": {\n \"message\": \"my log message\",\n \"serviceContext\": {\n \"service\": \"AKfyc...\"\n },\n \"data\": {\n \"key\": \"value\"\n }\n },\n \"resource\": {\n \"type\": \"app_script_function\",\n \"labels\": {\n \"invocation_type\": \"editor\",\n \"function_name\": \"unknown\",\n \"project_id\": \"1234567890\"\n }\n },\n \"timestamp\": \"2024-11-15T23:28:19.448591Z\",\n \"severity\": \"INFO\",\n \"labels\": {\n \"script.googleapis.com/user_key\": \"AOX2d...\",\n \"script.googleapis.com/process_id\": \"EAEA1...\",\n \"script.googleapis.com/project_key\": \"MQXvl...\",\n \"script.googleapis.com/deployment_id\": \"AKfyc...\"\n },\n \"logName\": \"projects/[PROJECT_ID]/logs/script.googleapis.com%2Fconsole_logs\",\n \"receiveTimestamp\": \"2024-11-15T23:28:20.363790313Z\"\n}\n```\n\nParameters\n\n| Name | Type | Description |\n|--------|----------|-------------------|\n| `data` | `Object` | the object to log |\n\nReturn\n\n\n[Logger](#) --- the Logger, for chaining.\n\n*** ** * ** ***\n\n`log(format, values)` \nWrites a formatted string to the logging console, using the format and values provided. The\nstring can include multiple `%s` placeholders, which are replaced with corresponding\nvalues from the list of arguments, converted to strings.\n\n```javascript\n// Log the number of Google Groups you belong to.\nconst groups = GroupsApp.getGroups();\nLogger.log('You are a member of %s Google Groups.', groups.length);\n```\n\nParameters\n\n| Name | Type | Description |\n|----------|-------------|---------------------------------------------------------------------------------------------|\n| `format` | `String` | a format string that contains as many instances of `%s` as the number of `values` arguments |\n| `values` | `Object...` | a variable number of values to insert into the format string |\n\nReturn\n\n\n[Logger](#) --- the Logger, for chaining"]]