mirror of
https://github.com/Zetaphor/browser-recall.git
synced 2025-12-06 10:29:38 +00:00
52 lines
1.4 KiB
Python
52 lines
1.4 KiB
Python
import logging
|
|
import logging.handlers
|
|
import os
|
|
from datetime import datetime
|
|
from pathlib import Path
|
|
|
|
# Create logs directory if it doesn't exist
|
|
LOGS_DIR = Path("logs")
|
|
LOGS_DIR.mkdir(exist_ok=True)
|
|
|
|
# Create formatters
|
|
CONSOLE_FORMAT = '%(levelname)s: %(message)s'
|
|
FILE_FORMAT = '%(asctime)s - %(name)s - %(levelname)s - %(message)s'
|
|
|
|
def setup_logger(name: str) -> logging.Logger:
|
|
"""
|
|
Set up a logger with both file and console handlers
|
|
|
|
Args:
|
|
name: The name of the logger (usually __name__)
|
|
|
|
Returns:
|
|
logging.Logger: Configured logger instance
|
|
"""
|
|
logger = logging.getLogger(name)
|
|
logger.setLevel(logging.INFO)
|
|
|
|
# Prevent adding handlers multiple times
|
|
if logger.handlers:
|
|
return logger
|
|
|
|
# Console handler
|
|
console_handler = logging.StreamHandler()
|
|
console_handler.setLevel(logging.WARNING)
|
|
console_handler.setFormatter(logging.Formatter(CONSOLE_FORMAT))
|
|
|
|
# File handler
|
|
log_file = LOGS_DIR / f"{datetime.now().strftime('%Y-%m')}.log"
|
|
file_handler = logging.handlers.RotatingFileHandler(
|
|
log_file,
|
|
maxBytes=10*1024*1024, # 10MB
|
|
backupCount=5,
|
|
encoding='utf-8'
|
|
)
|
|
file_handler.setLevel(logging.INFO)
|
|
file_handler.setFormatter(logging.Formatter(FILE_FORMAT))
|
|
|
|
# Add handlers
|
|
logger.addHandler(console_handler)
|
|
logger.addHandler(file_handler)
|
|
|
|
return logger |