maxstrobel Maximilian Strobel glenn-jocher pre-commit-ci[bot] commited on
Commit
741fac8
1 Parent(s): c759bbd

fix: disable usage of root logger (#7296)

Browse files

* 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 <[email protected]>
Co-authored-by: Glenn Jocher <[email protected]>
Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>

Files changed (2) hide show
  1. data/Objects365.yaml +2 -2
  2. utils/general.py +9 -3
data/Objects365.yaml CHANGED
@@ -61,9 +61,9 @@ names: ['Person', 'Sneakers', 'Chair', 'Other Shoes', 'Hat', 'Car', 'Lamp', 'Gla
61
  # Download script/URL (optional) ---------------------------------------------------------------------------------------
62
  download: |
63
  from tqdm import tqdm
64
-
65
  from utils.general import Path, check_requirements, download, np, xyxy2xywhn
66
-
67
  check_requirements(('pycocotools>=2.0',))
68
  from pycocotools.coco import COCO
69
 
 
61
  # Download script/URL (optional) ---------------------------------------------------------------------------------------
62
  download: |
63
  from tqdm import tqdm
64
+
65
  from utils.general import Path, check_requirements, download, np, xyxy2xywhn
66
+
67
  check_requirements(('pycocotools>=2.0',))
68
  from pycocotools.coco import COCO
69
 
utils/general.py CHANGED
@@ -82,11 +82,17 @@ def set_logging(name=None, verbose=VERBOSE):
82
  for h in logging.root.handlers:
83
  logging.root.removeHandler(h) # remove all handlers associated with the root logger object
84
  rank = int(os.getenv('RANK', -1)) # rank in world for Multi-GPU trainings
85
- logging.basicConfig(format="%(message)s", level=logging.INFO if (verbose and rank in (-1, 0)) else logging.WARNING)
86
- return logging.getLogger(name)
 
 
 
 
 
87
 
88
 
89
- LOGGER = set_logging('yolov5') # define globally (used in train.py, val.py, detect.py, etc.)
 
90
 
91
 
92
  def user_config_dir(dir='Ultralytics', env_var='YOLOV5_CONFIG_DIR'):
 
82
  for h in logging.root.handlers:
83
  logging.root.removeHandler(h) # remove all handlers associated with the root logger object
84
  rank = int(os.getenv('RANK', -1)) # rank in world for Multi-GPU trainings
85
+ level = logging.INFO if (verbose and rank in (-1, 0)) else logging.WARNING
86
+ log = logging.getLogger(name)
87
+ log.setLevel(level)
88
+ handler = logging.StreamHandler()
89
+ handler.setFormatter(logging.Formatter("%(message)s"))
90
+ handler.setLevel(level)
91
+ log.addHandler(handler)
92
 
93
 
94
+ set_logging() # run before defining LOGGER
95
+ LOGGER = logging.getLogger("yolov5") # define globally (used in train.py, val.py, detect.py, etc.)
96
 
97
 
98
  def user_config_dir(dir='Ultralytics', env_var='YOLOV5_CONFIG_DIR'):