Sets ANSI color codes >>> setColor("Hello World", color="red", istty=True) '\\x1b[31mHello World\\x1b[0m' >>> setColor("[INFO] Hello World", istty=True) '[\\x1b[32mINFO\\x1b[0m] Hello World' >>> setColor("[INFO] Hello [CRITICAL] World", istty=True) '[INFO] Hello [CRITIC
(message, color=None, bold=False, level=None, istty=None)
| 966 | return retVal |
| 967 | |
| 968 | def setColor(message, color=None, bold=False, level=None, istty=None): |
| 969 | """ |
| 970 | Sets ANSI color codes |
| 971 | |
| 972 | >>> setColor("Hello World", color="red", istty=True) |
| 973 | '\\x1b[31mHello World\\x1b[0m' |
| 974 | >>> setColor("[INFO] Hello World", istty=True) |
| 975 | '[\\x1b[32mINFO\\x1b[0m] Hello World' |
| 976 | >>> setColor("[INFO] Hello [CRITICAL] World", istty=True) |
| 977 | '[INFO] Hello [CRITICAL] World' |
| 978 | """ |
| 979 | |
| 980 | retVal = message |
| 981 | |
| 982 | if message: |
| 983 | if (IS_TTY or istty) and not conf.get("disableColoring"): # colorizing handler |
| 984 | if level is None: |
| 985 | levels = re.findall(r"\[(?P<result>%s)\]" % '|'.join(_[0] for _ in getPublicTypeMembers(LOGGING_LEVELS)), message) |
| 986 | |
| 987 | if len(levels) == 1: |
| 988 | level = levels[0] |
| 989 | |
| 990 | if bold or color: |
| 991 | retVal = colored(message, color=color, on_color=None, attrs=("bold",) if bold else None) |
| 992 | elif level: |
| 993 | try: |
| 994 | level = getattr(logging, level, None) |
| 995 | except: |
| 996 | level = None |
| 997 | retVal = LOGGER_HANDLER.colorize(message, level, True) |
| 998 | else: |
| 999 | match = re.search(r"\(([^)]*)\s*fork\)", message) |
| 1000 | if match: |
| 1001 | retVal = retVal.replace(match.group(1), colored(match.group(1), color="lightgrey")) |
| 1002 | |
| 1003 | if not any(_ in message for _ in ("Payload: ",)): |
| 1004 | for match in re.finditer(r"([^\w])'([^\n']+)'", message): # single-quoted (Note: watch-out for the banner) |
| 1005 | retVal = retVal.replace(match.group(0), "%s'%s'" % (match.group(1), colored(match.group(2), color="lightgrey"))) |
| 1006 | |
| 1007 | message = message.strip() |
| 1008 | |
| 1009 | return retVal |
| 1010 | |
| 1011 | def clearColors(message): |
| 1012 | """ |
no test coverage detected
searching dependent graphs…