diff --git a/run.py b/run.py index 556cd0b59ed023178fa7e6df1b5b03b9f6c5f157..e53bcd6129311f1da3c20fa9392d949aa1a15786 100644 --- a/run.py +++ b/run.py @@ -3,8 +3,8 @@ __date__ = '2019-11-14' import argparse -import logging +from src.helpers import Logger from src.run_modules.experiment_setup import ExperimentSetup from src.run_modules.model_setup import ModelSetup from src.run_modules.post_processing import PostProcessing @@ -12,6 +12,8 @@ from src.run_modules.pre_processing import PreProcessing from src.run_modules.run_environment import RunEnvironment from src.run_modules.training import Training +Logger() + def main(parser_args): @@ -29,10 +31,6 @@ def main(parser_args): if __name__ == "__main__": - formatter = '%(asctime)s - %(levelname)s: %(message)s [%(filename)s:%(funcName)s:%(lineno)s]' - logging.basicConfig(format=formatter, level=logging.INFO) - # logging.basicConfig(format=formatter, level=logging.DEBUG) - parser = argparse.ArgumentParser() parser.add_argument('--experiment_date', metavar='--exp_date', type=str, default=None, help="set experiment date as string") diff --git a/src/helpers.py b/src/helpers.py index 073a7bbf9ae3b7041591d48e4e5b7f3ef0efae42..3251b5d298fcba60587e2efb43f5e7ec575f398b 100644 --- a/src/helpers.py +++ b/src/helpers.py @@ -4,12 +4,13 @@ __author__ = 'Lukas Leufen, Felix Kleinert' __date__ = '2019-10-21' +import datetime as dt import logging import math import os -import time import socket -import datetime as dt +import sys +import time import keras.backend as K import xarray as xr @@ -218,3 +219,31 @@ def list_pop(list_full: list, pop_items): def dict_pop(dict_orig: Dict, pop_keys): pop_keys = to_list(pop_keys) return {k: v for k, v in dict_orig.items() if k not in pop_keys} + + +class Logger: + + def __init__(self, log_path=None): + + if not log_path: + log_path = os.path.dirname(sys.modules["__main__"].__file__) + log_path = os.path.join(log_path, "logging") + if not os.path.exists(log_path): + os.makedirs(log_path) + runtime = time.strftime("%Y-%m-%d_%H-%M-%S", time.localtime()) + log_file = os.path.join(log_path, f'logging_{runtime}.log') + + formatter = '%(asctime)s - %(levelname)s: %(message)s [%(filename)s:%(funcName)s:%(lineno)s]' + logging.basicConfig(level=logging.DEBUG, + format=formatter, + filename=log_file, + filemode='a') + # define a Handler which writes INFO messages or higher to the sys.stderr + console = logging.StreamHandler() + console.setLevel(logging.INFO) + # set a format which is simpler for console use + formatter = logging.Formatter(formatter) + # tell the handler to use this format + console.setFormatter(formatter) + # add the handler to the root logger + logging.getLogger('').addHandler(console)