Logging messages in JavaScript¶
You can log messages from a function or procedure handler written in JavaScript by using the snowflake
object included with the
Snowflake JavaScript API. When you’ve set up an event table to store log entries, Snowflake stores log entries generated by your handler
code in the table. For reference about the JavaScript API, see JavaScript stored procedures API.
Before logging from code, be sure you have the logging level set so that the messages you want are stored in the event table. For more information, see Setting levels for logging, metrics, and tracing.
Note
Before you can begin logging messages, you must set up an event table. For more information, see Event table overview.
You can access log messages by executing a SELECT command on the event table. For more information, see Viewing log messages.
For general information about setting up logging and retrieving messages in Snowflake, see Logging messages from functions and procedures.
Code in the following example uses the included snowflake
object to log messages at each of the supported levels.
Note that a message logged from a method that processes an input row will be logged for every row processed by the UDF. If the UDF is
executed in a large table, this can result in a large number of messages in the event table.
snowflake.log("info", "Information-level message");
snowflake.log("error", "Error message");
snowflake.log("warn", "Warning message");
snowflake.log("debug", "Debug message");
snowflake.log("trace", "Trace message");
snowflake.log("fatal", "Fatal message");
Adding custom attributes¶
When you create a log entry, you can add your own attributes in key-value pairs. Snowflake saves these custom attributes to the event table’s RECORD_ATTRIBUTES column.
To add custom attributes when calling the snowflake.log
method, assemble the key-value pairs in JSON that you pass as a third
argument to the log
function.
Code in the following example logs a message “Logging with attributes” to the event table’s VALUE column. It also adds two custom attributes to the RECORD_ATTRIBUTES column.
CREATE OR REPLACE PROCEDURE do_logging_javascript()
RETURNS VARCHAR
LANGUAGE JAVASCRIPT
AS $$
let log_attributes = {
"custom1": "value1",
"custom2": "value2"
}
snowflake.log("info", "Logging with attributes", log_attributes)
return "success";
$$;
Output of this log
call appears in the event table as follows. Note that the RECORD_ATTRIBUTES column will include
attributes that Snowflake adds automatically.
------------------------------------------------------------------
| VALUE | RECORD_ATTRIBUTES |
------------------------------------------------------------------
| "Logging with attributes" | { |
| | "custom1": "value1", |
| | "custom2": "value2" |
| | } |
------------------------------------------------------------------