Add color support + switch for logging

Signed-off-by: Václav Valíček <valicek1994@gmail.com>
This commit is contained in:
2022-08-08 09:27:52 +02:00
parent 48427a967c
commit 9b055ef356
3 changed files with 43 additions and 6 deletions

View File

@@ -1,9 +1,43 @@
import logging
import sys
class CustomFormatter(logging.Formatter):
grey = "\x1b[38;20m"
light_blue = "\x1b[34;1m"
yellow = "\x1b[33;20m"
red = "\x1b[31;20m"
bold_red = "\x1b[31;1m"
reset = "\x1b[0m"
# format = "%(asctime)s - %(name)s - %(levelname)s - %(message)s (%(filename)s:%(lineno)d)"
format = "%(asctime)-15s.%(msecs)03d :: [%(levelname)8s] :: %(name)-15s :: %(message)s (%(filename)s:%(lineno)s)"
time_format = "%Y-%m-%d %H:%M:%S"
FORMATS = {
logging.DEBUG: grey + format + reset,
logging.INFO: light_blue + format + reset,
logging.WARNING: yellow + format + reset,
logging.ERROR: red + format + reset,
logging.CRITICAL: bold_red + format + reset
}
def format(self, record):
log_fmt = self.FORMATS.get(record.levelno)
formatter = logging.Formatter(log_fmt, self.time_format)
return formatter.format(record)
console_logger = logging.StreamHandler()
console_formatter = logging.Formatter(
"%(asctime)-15s.%(msecs)03d :: [%(levelname)8s] :: %(name)-15s :: %(message)s (%(filename)s:%(lineno)s)",
"%Y-%m-%d %H:%M:%S")
# formatter for stdout - colored
if sys.stdout.isatty() or "--colored" in sys.argv:
console_formatter = CustomFormatter()
else:
# b&w for rest
console_formatter = logging.Formatter(
"%(asctime)-15s.%(msecs)03d :: [%(levelname)8s] :: %(name)-15s :: %(message)s (%(filename)s:%(lineno)s)",
"%Y-%m-%d %H:%M:%S")
# setup logger
console_logger.setFormatter(console_formatter)
log = logging.getLogger("rc")