Spaces:
Sleeping
Sleeping
File size: 2,253 Bytes
2d2a96b | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 | import logging
import os
from datetime import datetime
from pathlib import Path
ROOT_DIR = Path(__file__).resolve().parents[1]
LOG_DIR = ROOT_DIR / "outputs" / "logs"
TASK_PREFIX_MAP = {
"ieee_cis.loader" : ("fraud", "01_loader"),
"ieee_cis.splitter" : ("fraud", "02_splitter"),
"ieee_cis.feature_engineer" : ("fraud", "03_feature_engineer"),
"ieee_cis.preprocessor" : ("fraud", "04_preprocessor"),
"ieee_cis.feature_selector" : ("fraud", "05_feature_selector"),
"fraud_pipeline" : ("fraud", "06_pipeline"),
"fraud_detector" : ("fraud", "07_detector"),
"home_credit.loader" : ("credit", "01_loader"),
"home_credit.splitter" : ("credit", "02_splitter"),
"home_credit.feature_engineer" : ("credit", "03_feature_engineer"),
"home_credit.preprocessor" : ("credit", "04_preprocessor"),
"home_credit.feature_selector" : ("credit", "05_feature_selector"),
"credit_pipeline" : ("credit", "06_pipeline"),
"credit_scorer" : ("credit", "07_scorer"),
"shap_explainer" : ("credit", "08_shap_explainer"),
}
def get_logger(name: str) -> logging.Logger:
logger = logging.getLogger(name)
if logger.handlers:
return logger
logger.setLevel(logging.INFO)
formatter = logging.Formatter(
fmt="%(asctime)s | %(levelname)-8s | %(name)s | %(message)s",
datefmt="%Y-%m-%d %H:%M:%S",
)
date_str = datetime.now().strftime("%Y%m%d")
if name in TASK_PREFIX_MAP:
task, step = TASK_PREFIX_MAP[name]
task_log_dir = LOG_DIR / task
task_log_dir.mkdir(parents=True, exist_ok=True)
log_file = task_log_dir / f"{step}_{date_str}.log"
else:
LOG_DIR.mkdir(parents=True, exist_ok=True)
log_file = LOG_DIR / f"{name}_{date_str}.log"
console_handler = logging.StreamHandler()
console_handler.setLevel(logging.INFO)
console_handler.setFormatter(formatter)
file_handler = logging.FileHandler(log_file, encoding="utf-8")
file_handler.setLevel(logging.INFO)
file_handler.setFormatter(formatter)
logger.addHandler(console_handler)
logger.addHandler(file_handler)
return logger |