import logging
import os
import sys
import time
from pythonjsonlogger.json import JsonFormatter
from fortrace.fortrace_definitions import FORTRACE_ROOT_DIR
log_file_path = os.path.join(
FORTRACE_ROOT_DIR, "log", time.strftime("%Y%m%d_%H%M%S.log")
)
console_default_log_level = os.environ.get("CONSOLE_LOG_LEVEL", "INFO").upper()
ch = logging.StreamHandler(stream=sys.stdout)
ch.setLevel(console_default_log_level)
ch.setFormatter(CustomFormatter())
json_formatter = JsonFormatter(
"{threadName}{levelname}{asctime}s{message}s{pathname}s:{lineno}d", style="{"
)
json_formatter.datefmt = "%Y-%m-%d %H:%M:%S"
fh = logging.FileHandler(log_file_path)
fh.setLevel(logging.DEBUG)
fh.setFormatter(json_formatter)
[docs]
def setup_logger(name: str) -> logging.Logger:
"""Create a logger with the specified name.
Please refer to https://docs.python.org/3/howto/logging-cookbook.html for more
information. Especially relevant is
https://docs.python.org/3/howto/logging-cookbook.html#patterns-to-avoid
Args:
name: name of the logger to be created. Should be __name__ in most cases
Returns:
a new logger instance
"""
# create logger
logger = logging.getLogger(name)
logger.setLevel(logging.DEBUG)
logger.propagate = False
logger.addHandler(ch)
logger.addHandler(fh)
return logger