Skip to content

Commit

Permalink
fix: disable usage of root logger (#7296)
Browse files Browse the repository at this point in the history
* fix: disable usage of root logger

`logging.basicConfig` configures Python's root logger. This prohibits
fine control of logging, overwrites logging configuration done outside
the package, and is not best practice. Instead, the used logger is now
configured directly, and the root logger is untouched.

Example:
    If yolov5 is used as part of another project with some sophisticated
    logging, the internal `logging.basicConfig` call overwrites all the
    external configuration.

* [pre-commit.ci] auto fixes from pre-commit.com hooks

for more information, see https://pre-commit.ci

* Update general.py

* Update general.py

* Comment kaggle

* Uncomment kaggle

Co-authored-by: Maximilian Strobel <Maximilian.Strobel@infineon.com>
Co-authored-by: Glenn Jocher <glenn.jocher@ultralytics.com>
Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>
  • Loading branch information
4 people committed Apr 5, 2022
1 parent c759bbd commit 741fac8
Show file tree
Hide file tree
Showing 2 changed files with 11 additions and 5 deletions.
4 changes: 2 additions & 2 deletions data/Objects365.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -61,9 +61,9 @@ names: ['Person', 'Sneakers', 'Chair', 'Other Shoes', 'Hat', 'Car', 'Lamp', 'Gla
# Download script/URL (optional) ---------------------------------------------------------------------------------------
download: |
from tqdm import tqdm
from utils.general import Path, check_requirements, download, np, xyxy2xywhn
check_requirements(('pycocotools>=2.0',))
from pycocotools.coco import COCO
Expand Down
12 changes: 9 additions & 3 deletions utils/general.py
Original file line number Diff line number Diff line change
Expand Up @@ -82,11 +82,17 @@ def set_logging(name=None, verbose=VERBOSE):
for h in logging.root.handlers:
logging.root.removeHandler(h) # remove all handlers associated with the root logger object
rank = int(os.getenv('RANK', -1)) # rank in world for Multi-GPU trainings
logging.basicConfig(format="%(message)s", level=logging.INFO if (verbose and rank in (-1, 0)) else logging.WARNING)
return logging.getLogger(name)
level = logging.INFO if (verbose and rank in (-1, 0)) else logging.WARNING
log = logging.getLogger(name)
log.setLevel(level)
handler = logging.StreamHandler()
handler.setFormatter(logging.Formatter("%(message)s"))
handler.setLevel(level)
log.addHandler(handler)


LOGGER = set_logging('yolov5') # define globally (used in train.py, val.py, detect.py, etc.)
set_logging() # run before defining LOGGER
LOGGER = logging.getLogger("yolov5") # define globally (used in train.py, val.py, detect.py, etc.)


def user_config_dir(dir='Ultralytics', env_var='YOLOV5_CONFIG_DIR'):
Expand Down

0 comments on commit 741fac8

Please sign in to comment.