GoogleCloudPlatform / GoogleCloudPlatform/functions-framework-python

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

Aberta
#398 3 comentários 1 reação 0 responsáveis Ver no GitHub
documentation P2
Linguagem predominante
Python
Estrelas
968
Forks
128
Métricas de merge de PRs
Nenhum PR com merge em 30d

Descrição

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.

Guia de contribuição

Abrir o guia de contribuição

Avaliação

Esta issue ainda não foi avaliada.

Receba novas issues na sua caixa de entrada

Um resumo curto de issues do GitHub para quem está começando.