| | import logging |
| | import sys |
| | from pathlib import Path |
| |
|
| |
|
| | def setup_logger(name: str = None, level: str = "INFO", log_file: str = None) -> logging.Logger: |
| | """ |
| | Set up logger with consistent configuration across the application. |
| | |
| | Args: |
| | name: Logger name (defaults to root logger) |
| | level: Logging level (DEBUG, INFO, WARNING, ERROR, CRITICAL) |
| | log_file: Optional file path for logging to file |
| | |
| | Returns: |
| | Configured logger instance |
| | """ |
| | logger = logging.getLogger(name) |
| | |
| | if logger.handlers: |
| | return logger |
| | logger.setLevel(getattr(logging, level.upper())) |
| | |
| | formatter = logging.Formatter( |
| | '%(asctime)s - %(name)s - %(levelname)s - %(message)s', |
| | datefmt='%Y-%m-%d %H:%M:%S' |
| | ) |
| | |
| | console_handler = logging.StreamHandler(sys.stdout) |
| | console_handler.setFormatter(formatter) |
| | logger.addHandler(console_handler) |
| | |
| | if log_file: |
| | |
| | Path(log_file).parent.mkdir(parents=True, exist_ok=True) |
| | file_handler = logging.FileHandler(log_file) |
| | file_handler.setFormatter(formatter) |
| | logger.addHandler(file_handler) |
| | return logger |
| |
|
| |
|
| | |
| | main_logger = setup_logger("telegram-bot", level="INFO", log_file=None) |
| |
|