Spaces:
Sleeping
Sleeping
| import logging | |
| import os | |
| from logging.handlers import RotatingFileHandler | |
| LOG_DIR = "./logs" | |
| def get_logger(name: str) -> logging.Logger: | |
| os.makedirs(LOG_DIR, exist_ok=True) | |
| logger = logging.getLogger(name) | |
| if logger.handlers: | |
| return logger | |
| logger.setLevel(logging.DEBUG) | |
| # Dosya handler — 5MB, max 3 dosya | |
| file_handler = RotatingFileHandler( | |
| os.path.join(LOG_DIR, f"{name}.log"), | |
| maxBytes=5 * 1024 * 1024, | |
| backupCount=3, | |
| encoding="utf-8" | |
| ) | |
| file_handler.setLevel(logging.DEBUG) | |
| file_fmt = logging.Formatter("%(asctime)s | %(levelname)-8s | %(message)s", datefmt="%Y-%m-%d %H:%M:%S") | |
| file_handler.setFormatter(file_fmt) | |
| # Console handler | |
| console_handler = logging.StreamHandler() | |
| console_handler.setLevel(logging.INFO) | |
| console_fmt = logging.Formatter("%(levelname)-8s | %(message)s") | |
| console_handler.setFormatter(console_fmt) | |
| logger.addHandler(file_handler) | |
| logger.addHandler(console_handler) | |
| return logger | |
| def get_jsonl_logger(name: str) -> logging.Logger: | |
| """Returns a logger that writes raw JSON lines (no prefix) to logs/{name}.jsonl. | |
| Intended for machine-readable per-query traces.""" | |
| os.makedirs(LOG_DIR, exist_ok=True) | |
| logger = logging.getLogger(f"jsonl.{name}") | |
| if logger.handlers: | |
| return logger | |
| logger.setLevel(logging.INFO) | |
| logger.propagate = False # do not bubble up to root | |
| file_handler = RotatingFileHandler( | |
| os.path.join(LOG_DIR, f"{name}.jsonl"), | |
| maxBytes=5 * 1024 * 1024, | |
| backupCount=3, | |
| encoding="utf-8" | |
| ) | |
| file_handler.setLevel(logging.INFO) | |
| file_handler.setFormatter(logging.Formatter("%(message)s")) | |
| logger.addHandler(file_handler) | |
| return logger | |