ca6b53715e
Moved utility modules from src/utils/ to ytsage/utils/ and updated all relative imports accordingly. Adjusted docstring usage examples and fixed a path reference in LocalizationManager to reflect the new directory structure.
57 lines
1.2 KiB
Python
57 lines
1.2 KiB
Python
"""
|
|
YTSage centralized logging with loguru.
|
|
|
|
- This module provides centralized logging configuration for the entire YTSage application.
|
|
- Two log files: ytsage.log (all logs) & ytsage_error.log (errors only).
|
|
"""
|
|
|
|
import sys
|
|
|
|
from loguru import logger
|
|
|
|
from .ytsage_constants import APP_LOG_DIR, IS_FROZEN
|
|
|
|
# Separate configs for each handler
|
|
CONSOLE_CONFIG = {
|
|
"sink": sys.stdout if sys.stdout else sys.stderr,
|
|
"level": "INFO",
|
|
"colorize": True,
|
|
"enqueue": True,
|
|
}
|
|
|
|
ALL_LOGS_CONFIG = {
|
|
"sink": APP_LOG_DIR / "ytsage.log",
|
|
"level": "DEBUG",
|
|
"rotation": "10 MB",
|
|
"retention": "14 days",
|
|
"compression": "zip",
|
|
"enqueue": True,
|
|
}
|
|
|
|
ERROR_LOGS_CONFIG = {
|
|
"sink": APP_LOG_DIR / "ytsage_error.log",
|
|
"level": "ERROR",
|
|
"rotation": "5 MB",
|
|
"retention": "30 days",
|
|
"compression": "zip",
|
|
"enqueue": True,
|
|
}
|
|
|
|
|
|
# Logger initialization
|
|
def init_logger() -> None:
|
|
"""Configure loguru logger using separate configs for each handler."""
|
|
logger.remove() # Remove default loguru handler
|
|
|
|
if not IS_FROZEN:
|
|
logger.add(**CONSOLE_CONFIG)
|
|
logger.add(**ALL_LOGS_CONFIG)
|
|
logger.add(**ERROR_LOGS_CONFIG)
|
|
|
|
logger.info("YTSage logger initialized")
|
|
|
|
|
|
init_logger()
|
|
|
|
__all__ = ["logger"]
|