54 lines
1.2 KiB
Python
54 lines
1.2 KiB
Python
"""
|
|
Logging configuration for Odoo Directory CLI.
|
|
"""
|
|
|
|
import logging
|
|
import sys
|
|
from typing import Optional
|
|
|
|
from rich.console import Console
|
|
from rich.logging import RichHandler
|
|
|
|
# Global console for rich output
|
|
console = Console()
|
|
|
|
|
|
def setup_logging(level: str = "INFO") -> None:
|
|
"""
|
|
Configure logging with rich handler for pretty console output.
|
|
|
|
Args:
|
|
level: Log level (DEBUG, INFO, WARNING, ERROR, CRITICAL)
|
|
"""
|
|
logging.basicConfig(
|
|
level=level.upper(),
|
|
format="%(message)s",
|
|
datefmt="[%X]",
|
|
handlers=[
|
|
RichHandler(
|
|
console=console,
|
|
show_time=True,
|
|
show_path=False,
|
|
markup=True,
|
|
rich_tracebacks=True,
|
|
)
|
|
],
|
|
)
|
|
|
|
|
|
def get_logger(name: str, level: Optional[str] = None) -> logging.Logger:
|
|
"""
|
|
Get a logger instance with optional level override.
|
|
|
|
Args:
|
|
name: Logger name (usually __name__)
|
|
level: Optional level override
|
|
|
|
Returns:
|
|
Configured logger instance
|
|
"""
|
|
logger = logging.getLogger(name)
|
|
if level:
|
|
logger.setLevel(level.upper())
|
|
return logger
|