googleapis / googleapis/python-aiplatform

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

Đang mở
#3,667 0 bình luận 1 reaction 1 người được giao Được giao cho @sasha-gitg Xem trên GitHub
api: vertex-ai
Ngôn ngữ chính
Python
Star
905
Fork
465
Merge trung bình
1 ngày 13 giờ
Pull request đã merge (30 ngày)
44

Mô tả

#### 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...
```

Hướng dẫn đóng góp

Mở hướng dẫn đóng góp

Đánh giá

Issue này chưa được đánh giá.

Nhận issue mới trong hộp thư của bạn

Bản tóm tắt ngắn những issue GitHub phù hợp với người mới.