googleapis / googleapis/python-aiplatform

Importing `google.cloud.aiplatform` has side-effects and misconfigures logging

Offen
#3,667 0 Kommentare 1 Reaktion 1 zugewiesene Person Zugewiesen an @sasha-gitg Auf GitHub ansehen
api: vertex-ai
Vorherrschende Sprache
Python
Sterne
905
Forks
465
Ø Merge
1 T. 13 Std.
Gemergte PRs (30 T.)
44

Beschreibung

#### Environment details

- OS type and version: WSL/Ubuntu 20.04
- Python version: python3.11
- pip version: N/A
- `google-cloud-aiplatform` version: `1.47.0`

#### Steps to reproduce

1. Import aiplatform into any code before initializing logging
2. Note that there are either incorrectly configured logs or duplicate logs

#### Code example

```python
# This creates a logging.StreamHandler and adds it, forcing output. Note that I'm normally *not* importing this, but rather just `aiplatform.init` for example. The logger is created as soon as the file is imported.
from google.cloud.aiplatform.base import _LOGGER

import logging
import sys

logger = logging.getLogger(__file__)
logging.basicConfig(level=logging.INFO, handlers=[logging.StreamHandler(sys.stdout)])

# ok
logger.info("foobar")
# duplicate
_LOGGER.info("I'm duplicated")
```
Gives the output:
```
INFO:/home/ts/Repositories/spoof-vai/example.py:foobar
I'm duplicated
INFO:google.cloud.aiplatform.base:I'm duplicated
```

This means that any actual diagnostic output from the functions on VertexLogger appears twice in my output. A library should never create a logging handler, and should trust the end user to properly configure logging if desired. And if it *HAD* to create a logging handler, it shouldn't do so by side-effecting on an import.

For anyone finding this in search, the workaround I've found to prevent this handler creation is to *be faster*, by ensuring all my entrypoints look something like this:
```py3
import logging
import sys

root = logging.getLogger()
handler = logging.StreamHandler(sys.stdout)
root.addHandler(handler)

import aiplatform

...

def main():
logging.basicConfig(..., force=True) # or whatever logging you want to use...
```

Beitragsleitfaden

Beitragsleitfaden öffnen

Bewertung

Dieses Issue wurde noch nicht bewertet.

Neue Issues direkt in Ihr Postfach

Eine kurze Übersicht über anfängerfreundliche GitHub-Issues.