I am trying to format the output of the logging to have the levelname on the right side of the terminal always. I currently have a script that looks like:
import logging, os, time fn = 'FN' start = time.time() def getTerminalSize(): import os env = os.environ def ioctl_GWINSZ(fd): try: import fcntl, termios, struct, os cr = struct.unpack('hh', fcntl.ioctl(fd, termios.TIOCGWINSZ, '1234')) except: return return cr cr = ioctl_GWINSZ(0) or ioctl_GWINSZ(1) or ioctl_GWINSZ(2) if not cr: try: fd = os.open(os.ctermid(), os.O_RDONLY) cr = ioctl_GWINSZ(fd) os.close(fd) except: pass if not cr: cr = (env.get('LINES', 25), env.get('COLUMNS', 80)) return int(cr[1]), int(cr[0]) (width, _) = getTerminalSize() level_width = 8 message_width = width - level_width - 4 FORMAT = '%(message)-{len1:{width1}d}s [%(levelname){len2:{width2}d}s]'.format( len1 = message_width,_ len2 = level_width,_ width1 = len(str(message_width)),_ width2 = len(str(level_width))) logging.basicConfig(format=FORMAT, level="DEBUG") logging.debug("Debug Message") logging.info("Info Message") logging.warning("Warning Message") logging.error("Error Message") logging.critical("Critical Message") logging.info("Starting File: " + os.path.basename(fn) + "\n-----------------------------------------") logging.info("\tTo read data: %s"%(time.time() - start)) The output looks like:
Debug Message [ DEBUG] Info Message [ INFO] Warning Message [ WARNING] Error Message [ ERROR] Critical Message [CRITICAL] Starting File: Channel209.Raw32 ----------------------------------------- [ INFO] To read data: 0.281999826431 [ INFO] I would like the output to look something like this instead and can't quite figure it out:
Debug Message [ DEBUG] Info Message [ INFO] Warning Message [ WARNING] Error Message [ ERROR] Critical Message [CRITICAL] Starting File: Channel209.Raw32 ----------------------------------------- [ INFO] To read data: 0.281999826431 [ INFO]