| |
| import logging |
| import os |
| from datetime import datetime |
| |
|
|
| LOGS_DIR = "logs" |
|
|
| |
|
|
| os.makedirs(LOGS_DIR, exist_ok=True) |
|
|
| |
| log_filename = os.path.join(LOGS_DIR, f"app_{datetime.now().strftime('%Y%m%d')}.log") |
|
|
| def setup_logger(name): |
| """ |
| Create a logger with the specified name that writes to both file and console |
| """ |
| logger = logging.getLogger(name) |
| |
| |
| if not logger.handlers: |
| logger.setLevel(logging.DEBUG) |
| |
| |
| file_handler = logging.FileHandler(log_filename) |
| file_handler.setLevel(logging.DEBUG) |
| file_formatter = logging.Formatter( |
| '%(asctime)s - %(name)s - %(levelname)s - [%(filename)s:%(lineno)d] - %(message)s', |
| datefmt='%Y-%m-%d %H:%M:%S' |
| ) |
| file_handler.setFormatter(file_formatter) |
| |
| |
| console_handler = logging.StreamHandler() |
| console_handler.setLevel(logging.INFO) |
| console_formatter = logging.Formatter( |
| '%(levelname)s - %(name)s - %(message)s' |
| ) |
| console_handler.setFormatter(console_formatter) |
| |
| |
| logger.addHandler(file_handler) |
| logger.addHandler(console_handler) |
| |
| return logger |