34 lines
1.2 KiB
Python
34 lines
1.2 KiB
Python
import os
|
|
import sys
|
|
import logging
|
|
import click
|
|
|
|
|
|
def exception_handler(exception_type, exception, traceback):
|
|
if bool(os.getenv('DEBUG_UCLOUD')) is True:
|
|
sys.__excepthook__(exception_type, exception, traceback)
|
|
else:
|
|
print("%s: %s" % (exception_type.__name__, exception))
|
|
|
|
|
|
class NoTracebackStreamHandler(logging.StreamHandler):
|
|
def handle(self, record):
|
|
info, cache = record.exc_info, record.exc_text
|
|
record.exc_info, record.exc_text = None, None
|
|
|
|
if record.levelname in ["WARNING", "WARN"]:
|
|
click.echo(click.style('', fg='yellow', bold=True, reset=False), nl=False)
|
|
elif record.levelname == "ERROR":
|
|
click.echo(click.style('', fg='red', bold=True, reset=False), nl=False)
|
|
elif record.levelname == "INFO":
|
|
click.echo(click.style('', fg='green', bold=True, reset=False), nl=False)
|
|
elif record.levelname == "CRITICAL":
|
|
click.echo(click.style('', fg='cyan', bold=True, reset=False), nl=False)
|
|
|
|
try:
|
|
super().handle(record)
|
|
finally:
|
|
record.exc_info = info
|
|
record.exc_text = cache
|
|
click.echo(click.style('', 'reset'), nl=False)
|