Cloud Functions gen2 uses Cloud Run to build and deploy a container. Based on the selected runtime in Cloud Functions, i guess there is a default Dockerfile. For PHP runtimes (php 7.4 + 8.1) there is an issue with passing structured logs to php://stdout en php://stderr. By default, php-fpm decorates all data sent to stdout and stderr. Because of this, the structured log becomes an invalid json string.
Log sent to stdout from code:
{"severity":"ERROR","message":"This is a sample error log"}
After php-fpm decoration:
[31-Jul-2022 11:30:51] WARNING: [pool app] child 18 said into stderr: "{"severity":"ERROR","message":"This is a test log"}"
This could be fixed by setting decorate_workers_output to off in the php-fpm config. This could be an extra step in the default php runtime Dockerfile used by Cloud Functions.