From c8f3192b79fb57f6871dce0a06af00a95dc64888 Mon Sep 17 00:00:00 2001 From: Francisco Schulz Date: Mon, 6 Feb 2023 17:03:44 +0100 Subject: [PATCH] use logging code from template repo --- src/image_prediction/utils/logger.py | 39 +++++++++++++++++++++++++++- src/serve.py | 9 ++++--- 2 files changed, 44 insertions(+), 4 deletions(-) diff --git a/src/image_prediction/utils/logger.py b/src/image_prediction/utils/logger.py index 58f6022..5f81c8b 100644 --- a/src/image_prediction/utils/logger.py +++ b/src/image_prediction/utils/logger.py @@ -1,5 +1,8 @@ import logging - +import os +import pathlib +import sys +from typing import Union from image_prediction.config import CONFIG @@ -25,3 +28,37 @@ def make_logger_getter(): get_logger = make_logger_getter() + + +def setup_logger( + level: Union[int, str] = "DEBUG", + file: Union[str, pathlib.Path] = "./logs/dev.log", + save: bool = False +) -> logging.Logger: + + LOG_FORMAT = "%(asctime)s [%(levelname)s] - [%(filename)s -> %(funcName)s() -> %(lineno)s] : %(message)s" + DATE_FORMAT = "%Y-%m-%d %H:%M:%S" + + logger = logging.getLogger() + logger.setLevel(level) + + stream_handler = logging.StreamHandler(sys.stdout) + stream_handler_format = logging.Formatter(LOG_FORMAT, datefmt=DATE_FORMAT) + stream_handler.setFormatter(stream_handler_format) + + logger.addHandler(stream_handler) + + if save: + file = pathlib.Path(file).absolute() + path = file.parent + + if not os.path.exists(path): + os.mkdir(path) + + file_handler = logging.FileHandler(file) + file_handler_format = logging.Formatter(LOG_FORMAT, datefmt=DATE_FORMAT) + file_handler.setFormatter(file_handler_format) + + logger.addHandler(file_handler) + + return logger diff --git a/src/serve.py b/src/serve.py index 51caf8e..a21acbd 100644 --- a/src/serve.py +++ b/src/serve.py @@ -12,6 +12,7 @@ from image_prediction.locations import CONFIG_FILE, MLRUNS_DIR from image_prediction.pipeline import load_model, load_pipeline from image_prediction.utils.banner import load_banner from image_prediction.utils.process_wrapping import wrap_in_process +from image_prediction.utils.logger import setup_logger PYINFRA_CONFIG = config.get_config() IMAGE_CONFIG = Config(CONFIG_FILE) @@ -19,9 +20,11 @@ MODEL = load_model(MLRUNS_DIR, CONFIG) BUCKET = PYINFRA_CONFIG.storage_bucket STORAGE = get_storage(PYINFRA_CONFIG) -logging.getLogger().addHandler(logging.StreamHandler()) -logger = logging.getLogger("main") -logger.setLevel(PYINFRA_CONFIG.logging_level_root) +# logger = logging.getLogger(__name__) +# logger.addHandler(logging.StreamHandler()) +# logger = logging.getLogger("main") +# logger.setLevel(PYINFRA_CONFIG.logging_level_root) +logger = setup_logger() # A component of the callback (probably tensorflow) does not release allocated memory (see RED-4206).