fix: disable usage of root logger (#7296)
* 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>
This commit is contained in:
2 files changed
+11
-5
No files matched your search
+9
-3
@@ -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'):
|
||||
|
||||
Reference in new issue
Block a user