uncloud-cli/uncloud_cli/helper.py

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)