Global logging configuration for the OpenJarvis CLI.
Functions
setup_logging
setup_logging(verbose: bool = False, quiet: bool = False, log_file: Optional[Union[str, Path]] = None) -> Logger
Configure the openjarvis logger.
| PARAMETER |
DESCRIPTION |
verbose
|
TYPE:
bool
DEFAULT:
False
|
quiet
|
Set log level to ERROR (overrides verbose if both set).
TYPE:
bool
DEFAULT:
False
|
log_file
|
Path for a rotating file handler. When verbose is True
and no log_file is given, defaults to
~/.openjarvis/cli.log.
TYPE:
Optional[Union[str, Path]]
DEFAULT:
None
|
| RETURNS |
DESCRIPTION |
The configured ``openjarvis`` logger.
|
|
Source code in src/openjarvis/cli/log_config.py
| def setup_logging(
verbose: bool = False,
quiet: bool = False,
log_file: Optional[Union[str, Path]] = None,
) -> logging.Logger:
"""Configure the ``openjarvis`` logger.
Parameters
----------
verbose:
Set log level to DEBUG.
quiet:
Set log level to ERROR (overrides verbose if both set).
log_file:
Path for a rotating file handler. When *verbose* is ``True``
and no *log_file* is given, defaults to
``~/.openjarvis/cli.log``.
Returns
-------
The configured ``openjarvis`` logger.
"""
logger = logging.getLogger("openjarvis")
# Clear existing handlers to avoid duplication across calls
logger.handlers.clear()
if quiet:
level = logging.ERROR
elif verbose:
level = logging.DEBUG
else:
level = logging.WARNING
logger.setLevel(level)
# Console handler
console_handler = logging.StreamHandler()
console_handler.setLevel(level)
fmt = logging.Formatter("%(levelname)s %(name)s: %(message)s")
console_handler.setFormatter(fmt)
logger.addHandler(console_handler)
# File handler (verbose or explicit path)
if verbose or log_file is not None:
if log_file is None:
log_dir = Path.home() / ".openjarvis"
log_dir.mkdir(parents=True, exist_ok=True)
log_file = log_dir / "cli.log"
file_handler = RotatingFileHandler(
str(log_file), maxBytes=5 * 1024 * 1024, backupCount=3,
)
file_handler.setLevel(logging.DEBUG)
file_fmt = logging.Formatter(
"%(asctime)s %(levelname)s %(name)s: %(message)s"
)
file_handler.setFormatter(file_fmt)
logger.addHandler(file_handler)
return logger
|