75 lines
1.7 KiB
Python
75 lines
1.7 KiB
Python
"""Set of functions for logging messages."""
|
|
import sys
|
|
import warnings
|
|
from typing import Optional, Type
|
|
|
|
from gymnasium.utils import colorize
|
|
|
|
|
|
DEBUG = 10
|
|
INFO = 20
|
|
WARN = 30
|
|
ERROR = 40
|
|
DISABLED = 50
|
|
|
|
min_level = 30
|
|
|
|
|
|
# Ensure DeprecationWarning to be displayed (#2685, #3059)
|
|
warnings.filterwarnings("once", "", DeprecationWarning, module=r"^gymnasium\.")
|
|
|
|
|
|
def set_level(level: int):
|
|
"""Set logging threshold on current logger."""
|
|
global min_level
|
|
min_level = level
|
|
|
|
|
|
def debug(msg: str, *args: object):
|
|
"""Logs a debug message to the user."""
|
|
if min_level <= DEBUG:
|
|
print(f"DEBUG: {msg % args}", file=sys.stderr)
|
|
|
|
|
|
def info(msg: str, *args: object):
|
|
"""Logs an info message to the user."""
|
|
if min_level <= INFO:
|
|
print(f"INFO: {msg % args}", file=sys.stderr)
|
|
|
|
|
|
def warn(
|
|
msg: str,
|
|
*args: object,
|
|
category: Optional[Type[Warning]] = None,
|
|
stacklevel: int = 1,
|
|
):
|
|
"""Raises a warning to the user if the min_level <= WARN.
|
|
|
|
Args:
|
|
msg: The message to warn the user
|
|
*args: Additional information to warn the user
|
|
category: The category of warning
|
|
stacklevel: The stack level to raise to
|
|
"""
|
|
if min_level <= WARN:
|
|
warnings.warn(
|
|
colorize(f"WARN: {msg % args}", "yellow"),
|
|
category=category,
|
|
stacklevel=stacklevel + 1,
|
|
)
|
|
|
|
|
|
def deprecation(msg: str, *args: object):
|
|
"""Logs a deprecation warning to users."""
|
|
warn(msg, *args, category=DeprecationWarning, stacklevel=2)
|
|
|
|
|
|
def error(msg: str, *args: object):
|
|
"""Logs an error message if min_level <= ERROR in red on the sys.stderr."""
|
|
if min_level <= ERROR:
|
|
print(colorize(f"ERROR: {msg % args}", "red"), file=sys.stderr)
|
|
|
|
|
|
# DEPRECATED:
|
|
setLevel = set_level
|