GoogleCloudPlatform / GoogleCloudPlatform/functions-framework-python

Looking for support: Setup logging for async function with http.aio

Open
#398 3 comments 1 reaction 0 assignees View on GitHub
documentation P2
Dominant language
Python
Stars
968
Forks
128
PR merge metrics
No merged PRs in 30d

Description

Hello.
My goal is to see the **logs of an async CloudRun function in the CloudRun logs console**.
Does anybody has experience how to set this up correctly?

### Background
So far, for synchronous CloudRun function, I always used the google [python-logging](https://github.com/googleapis/python-logging) library, which is also recommended in the [Google Cloud documentation](https://cloud.google.com/logging/docs/setup/python) and is really simple.

However, the same is not working when I switch to the async function, there I never receive any logs. Here the sample code:
```python
from starlette.requests import Request
from starlette.responses import Response, JSONResponse
import aiohttp
import functions_framework.aio

import google.cloud.logging

# logging handler
client = google.cloud.logging.Client()
client.setup_logging(log_level=logging.DEBUG)

@functions_framework.aio.http
async def llm_emulator(request: Request):
logging.log(msg="hello world", level=logging.DEBUG) #-> this log never reaches CloudRun log console

```
I did some experimentation, my assumptions so far:
- async uses a different setup, not Flask+uvicorn but starlette under the hood. This might require some different initialisation of the logging
- maybe data is logged into a different thread/coroutine, I tried ```client.flash_handlers()``` but this has no effect.

Does anyone use logs in an async function and has experience, how to set it up correctly? (with or without any library)
I would be grateful for any hints or links to available documentation. Thanks a lot.

Contributor guide

Open the contributing guide

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.