Revert "update nicelogger"

This reverts commit 0f441b0bf2.

nicelogger seems to have local changes and is dependent by nvchecker/tools.py
This commit is contained in:
lilydjwg 2024-04-28 17:12:14 +08:00
parent 0f441b0bf2
commit fdac4af358

View file

@ -7,16 +7,14 @@ A Tornado-inspired logging formatter, with displayed time with millisecond accur
FYI: pyftpdlib also has a Tornado-style logger. FYI: pyftpdlib also has a Tornado-style logger.
''' '''
from __future__ import annotations
import sys import sys
import time import time
import logging import logging
class TornadoLogFormatter(logging.Formatter): class Colors:
def __init__(self, color, *args, **kwargs): def __init__(self, color=None):
super().__init__(*args, **kwargs) if color is None:
self._color = color color = support_color()
if color: if color:
import curses import curses
curses.setupterm() curses.setupterm()
@ -25,19 +23,32 @@ class TornadoLogFormatter(logging.Formatter):
curses.tigetstr("setf") or "", "ascii") curses.tigetstr("setf") or "", "ascii")
else: else:
fg_color = curses.tigetstr("setaf") or curses.tigetstr("setf") or b"" fg_color = curses.tigetstr("setaf") or curses.tigetstr("setf") or b""
self.blue = str(curses.tparm(fg_color, 4), "ascii")
self.yellow = str(curses.tparm(fg_color, 3), "ascii")
self.green = str(curses.tparm(fg_color, 2), "ascii")
self.red = str(curses.tparm(fg_color, 1), "ascii")
self.bright_red = str(curses.tparm(fg_color, 9), "ascii")
self.normal = str(curses.tigetstr("sgr0"), "ascii")
else:
self.blue = self.yellow = self.green = self.red = self.bright_red = self.normal = ""
class TornadoLogFormatter(logging.Formatter):
def __init__(self, color, *args, **kwargs):
super().__init__(*args, **kwargs)
self._color = color
if color:
colors = Colors(color=color)
self._colors = { self._colors = {
logging.DEBUG: str(curses.tparm(fg_color, 4), # Blue logging.DEBUG: colors.blue,
"ascii"), logging.INFO: colors.green,
logging.INFO: str(curses.tparm(fg_color, 2), # Green logging.WARNING: colors.yellow,
"ascii"), logging.ERROR: colors.red,
logging.WARNING: str(curses.tparm(fg_color, 3), # Yellow logging.CRITICAL: colors.bright_red,
"ascii"),
logging.ERROR: str(curses.tparm(fg_color, 1), # Red
"ascii"),
logging.CRITICAL: str(curses.tparm(fg_color, 9), # Bright Red
"ascii"),
} }
self._normal = str(curses.tigetstr("sgr0"), "ascii") self._normal = colors.normal
def format(self, record): def format(self, record):
try: try:
@ -60,7 +71,6 @@ class TornadoLogFormatter(logging.Formatter):
'filename', 'exc_info', 'exc_text', 'created', 'funcName', 'filename', 'exc_info', 'exc_text', 'created', 'funcName',
'processName', 'process', 'msecs', 'relativeCreated', 'thread', 'processName', 'process', 'msecs', 'relativeCreated', 'thread',
'threadName', 'name', 'levelno', 'msg', 'pathname', 'stack_info', 'threadName', 'name', 'levelno', 'msg', 'pathname', 'stack_info',
'taskName',
}) })
if record.exc_info: if record.exc_info:
@ -70,6 +80,18 @@ class TornadoLogFormatter(logging.Formatter):
formatted = formatted.rstrip() + "\n" + record.exc_text formatted = formatted.rstrip() + "\n" + record.exc_text
return formatted.replace("\n", "\n ") return formatted.replace("\n", "\n ")
def support_color(stream=sys.stderr):
if stream.isatty():
try:
import curses
curses.setupterm()
if curses.tigetnum("colors") > 0:
return True
except:
import traceback
traceback.print_exc()
return False
def enable_pretty_logging(level=logging.DEBUG, handler=None, color=None): def enable_pretty_logging(level=logging.DEBUG, handler=None, color=None):
''' '''
handler: specify a handler instead of default StreamHandler handler: specify a handler instead of default StreamHandler
@ -81,17 +103,8 @@ def enable_pretty_logging(level=logging.DEBUG, handler=None, color=None):
h = logging.StreamHandler() h = logging.StreamHandler()
else: else:
h = handler h = handler
if color is None: if color is None and handler is None:
color = False color = support_color()
if handler is None and sys.stderr.isatty():
try:
import curses
curses.setupterm()
if curses.tigetnum("colors") > 0:
color = True
except:
import traceback
traceback.print_exc()
formatter = TornadoLogFormatter(color=color) formatter = TornadoLogFormatter(color=color)
h.setLevel(level) h.setLevel(level)
h.setFormatter(formatter) h.setFormatter(formatter)