62 lines
1.5 KiB
Python
62 lines
1.5 KiB
Python
import argparse
|
|
import logging
|
|
import os
|
|
|
|
|
|
logger = logging.getLogger("utils")
|
|
|
|
# Common Args
|
|
def get_common_args(prog: str):
|
|
# Setup Args
|
|
parser = argparse.ArgumentParser(prog=prog)
|
|
|
|
# Analysis settings
|
|
parser.add_argument(
|
|
"-D",
|
|
"--data-dir",
|
|
help="Directory for downloaded data",
|
|
default=os.environ.get("DATA_DIRECTORY", "data")
|
|
)
|
|
|
|
# Debug
|
|
parser.add_argument(
|
|
"-d",
|
|
"--debug",
|
|
default=False,
|
|
action="store_true",
|
|
help="Enable verbose logging",
|
|
)
|
|
|
|
return parser
|
|
|
|
|
|
# LOGGING
|
|
class Formatter(logging.Formatter):
|
|
grey = "\x1b[37m"
|
|
yellow = "\x1b[33m"
|
|
red = "\x1b[31m"
|
|
bold_red = "\x1b[1;31m"
|
|
reset = "\x1b[0m"
|
|
format = "%(asctime)s - %(name)-24s - %(levelname)-7s - %(message)s (%(filename)s:%(lineno)d)"
|
|
|
|
FORMATS = {
|
|
logging.DEBUG: logging.Formatter(grey + format + reset),
|
|
logging.INFO: logging.Formatter(format),
|
|
logging.WARNING: logging.Formatter(yellow + format + reset),
|
|
logging.ERROR: logging.Formatter(red + format + reset),
|
|
logging.CRITICAL: logging.Formatter(bold_red + format + reset),
|
|
}
|
|
|
|
def format(self, record):
|
|
return self.FORMATS.get(record.levelno).format(record)
|
|
|
|
|
|
def setup_logging(debug: bool = False):
|
|
ch = logging.StreamHandler()
|
|
ch.setFormatter(Formatter())
|
|
|
|
logging.basicConfig(
|
|
handlers=[ch],
|
|
level=logging.DEBUG if debug else logging.INFO,
|
|
)
|