File size: 1,634 Bytes
36a4110
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
# Copyright (c) Meta Platforms, Inc. and affiliates.
# All rights reserved.
#
# This source code is licensed under the BSD-style license found in the
# LICENSE file in the root directory of this source tree.

"""
Simple logging utilities for CARLA environment.

Adapted from SinatrasC/carla-env logging module.
"""

from __future__ import annotations

import logging
import os

_LOGGER_BASE = "openenv.carla_env"

# Package-level parent logger. Defaults to WARNING; override via env vars
# or configure_logging().
_pkg_logger = logging.getLogger(_LOGGER_BASE)
if _pkg_logger.level == logging.NOTSET:
    _pkg_logger.setLevel(logging.WARNING)


def _normalize_level(level: str | int) -> str | int:
    """Accept common level formats (e.g. ``"debug"``, ``"10"``)."""
    if isinstance(level, str):
        s = level.strip()
        if s.isdigit():
            return int(s)
        return s.upper()
    return level


def configure_logging(log_level: str | int | None = None) -> None:
    """
    Set the package parent logger level.

    Precedence: ``CARLA_ENV_LOG_LEVEL`` > *log_level* argument.
    """
    env_level = os.getenv("CARLA_ENV_LOG_LEVEL")
    if env_level:
        try:
            _pkg_logger.setLevel(_normalize_level(env_level))
            return
        except Exception:
            pass

    if log_level is not None:
        _pkg_logger.setLevel(_normalize_level(log_level))


def get_logger(name: str) -> logging.Logger:
    """Return a logger namespaced under ``openenv.carla_env``."""
    return logging.getLogger(f"{_LOGGER_BASE}.{name}")


# Apply env-var overrides at import time.
configure_logging(None)