Geoglyph_SAM2 / src /logger.py
JuanHernandez-uc
add SAM2 segmentation
7129113
Raw
History Blame Contribute Delete
2.7 kB
# src/logger.py
# Structured logging configuration.
import logging
import logging.config
import os
def setup_logging():
logs_dir = os.path.join(
os.path.dirname(os.path.dirname(os.path.abspath(__file__))),
"logs",
)
os.makedirs(logs_dir, exist_ok=True)
LOG_FORMAT = "%(asctime)s | %(name)-8s | %(levelname)-7s | %(message)s"
DATE_FORMAT = "%Y-%m-%d %H:%M:%S"
logging_config = {
"version": 1,
"disable_existing_loggers": False,
"formatters": {
"standard": {
"format": LOG_FORMAT,
"datefmt": DATE_FORMAT,
},
},
"handlers": {
"console": {
"class": "logging.StreamHandler",
"level": "INFO",
"formatter": "standard",
# Use stderr so stdout can stay clean for JSON in CLI mode.
"stream": "ext://sys.stderr",
},
"file_boot": {
"class": "logging.handlers.RotatingFileHandler",
"level": "INFO",
"formatter": "standard",
"filename": os.path.join(logs_dir, "boot.log"),
"maxBytes": 10_485_760,
"backupCount": 3,
"encoding": "utf8",
},
"file_api": {
"class": "logging.handlers.RotatingFileHandler",
"level": "INFO",
"formatter": "standard",
"filename": os.path.join(logs_dir, "api.log"),
"maxBytes": 10_485_760,
"backupCount": 3,
"encoding": "utf8",
},
"file_pipeline": {
"class": "logging.handlers.RotatingFileHandler",
"level": "INFO",
"formatter": "standard",
"filename": os.path.join(logs_dir, "pipeline.log"),
"maxBytes": 10_485_760,
"backupCount": 3,
"encoding": "utf8",
},
},
"loggers": {
"boot": {
"level": "INFO",
"handlers": ["console", "file_boot"],
"propagate": False,
},
"api": {
"level": "INFO",
"handlers": ["console", "file_api"],
"propagate": False,
},
"pipeline": {
"level": "INFO",
"handlers": ["console", "file_pipeline"],
"propagate": False,
},
},
"root": {
"level": "INFO",
"handlers": ["console"],
},
}
logging.config.dictConfig(logging_config)