Cloud Functions automatically captures an application's standard output streams and sends them to the centralized logging system available in Yandex.Cloud. In addition to the application run history, the system logs request execution events.
Additional messages are logged using standard language constructs:
logging: Outputs a message in the set format to the selected output stream.
Multiline messages must be separated by
\r (carriage return) and not by
\n (line feed). When using a line feed, each line is sent as a separate message and displayed separately in the log.
When handling each function call, the system logs
REPORT system messages:
START RequestID: <request ID> Version: <function version ID> END RequestID: <request ID> REPORT RequestID: <request ID> Duration: 236.606 ms Billed Duration: 300 ms Memory Size: 128 MB Max Memory Used: 22 MB Queuing Duration: 0.027 ms Function Init Duration: 225.298 ms
All lines contain the ID of the request (
RequestID), which is generated automatically when the function is invoked.
REPORT line provides a report on the function execution. It contains additional information about the resources consumed:
Duration: The time spent invoking the function. It includes the
Function Init Durationparameters.
Billed Duration: The time you're billed for in accordance with the pricing policy.
Memory Size: The amount of memory specified when creating the version, MB.
Max Memory Used: The amount of memory used at the start of the request.
Queuing Duration: The time spent by the function call request in the internal queue. If it increases, this may mean there aren't enough function instances. The maximum number of instances depends on the quotas.
Function Init Duration: The time spent initializing the runtime and loading the function code.
Before running a function, Cloud Functions configures the following for the root logger:
- A handler for logging data to the
- A formatter that adds to the message its creation timestamp, the request ID, and the logging level.
You can't change the root logger settings using the
By default, the root logger level is
Warning, all logs with a lower level are ignored. You can change the logging level using the
setLevel method for:
- The entire app.
- Any logger except the root one.
You can change the log format as follows:
root_handler = logging.getLogger().handlers root_handler.setFormatter(logging.Formatter( '[%(levelname)s]\t%(name)s\t%(request_id)s\t%(message)s\n' ))
The example shows the logger name output instead of the message creation timestamp.
Learn more about how to configure logging in the Python documentation.