82 lines
2.5 KiB
Python
82 lines
2.5 KiB
Python
#!/usr/local/bin/python3.sh
|
|
# -*-mode: python; indent-tabs-mode: nil; py-indent-offset: 4; coding: utf-8 -*
|
|
|
|
import sys
|
|
import os
|
|
|
|
try:
|
|
if 'COLOREDLOGS_LEVEL_STYLES' not in os.environ:
|
|
os.environ['COLOREDLOGS_LEVEL_STYLES'] = 'spam=22;debug=28;verbose=34;notice=220;warning=202;success=118,bold;error=124;critical=background=red'
|
|
# https://pypi.org/project/coloredlogs/
|
|
import coloredlogs
|
|
except ImportError as e:
|
|
coloredlogs = False
|
|
|
|
global LOG
|
|
import logging
|
|
import warnings
|
|
warnings.filterwarnings('ignore')
|
|
LOG = logging.getLogger()
|
|
|
|
def vsetup_logging(log_level, logfile='', stream=sys.stdout):
|
|
global LOG
|
|
add = True
|
|
|
|
# stem fucks up logging
|
|
from stem.util import log
|
|
logging.getLogger('stem').setLevel(30)
|
|
|
|
logging._defaultFormatter = logging.Formatter(datefmt='%m-%d %H:%M:%S')
|
|
logging._defaultFormatter.default_time_format = '%m-%d %H:%M:%S'
|
|
logging._defaultFormatter.default_msec_format = ''
|
|
|
|
kwargs = dict(level=log_level,
|
|
force=True,
|
|
format='%(levelname)s %(message)s')
|
|
|
|
if logfile:
|
|
add = logfile.startswith('+')
|
|
sub = logfile.startswith('-')
|
|
if add or sub:
|
|
logfile = logfile[1:]
|
|
kwargs['filename'] = logfile
|
|
|
|
if coloredlogs:
|
|
# https://pypi.org/project/coloredlogs/
|
|
aKw = dict(level=log_level,
|
|
logger=LOG,
|
|
stream=stream,
|
|
fmt='%(levelname)s %(message)s'
|
|
)
|
|
coloredlogs.install(**aKw)
|
|
if logfile:
|
|
oHandler = logging.FileHandler(logfile)
|
|
LOG.addHandler(oHandler)
|
|
LOG.info(f"CSetting log_level to {log_level} {stream}")
|
|
else:
|
|
logging.basicConfig(**kwargs)
|
|
if add and logfile:
|
|
oHandler = logging.StreamHandler(stream)
|
|
LOG.addHandler(oHandler)
|
|
LOG.info(f"SSetting log_level to {log_level!s}")
|
|
|
|
logging._levelToName = {
|
|
logging.CRITICAL: 'CRITICAL',
|
|
logging.ERROR: 'ERROR',
|
|
logging.WARNING: 'WARN',
|
|
logging.INFO: 'INFO',
|
|
logging.DEBUG: 'DEBUG',
|
|
logging.NOTSET: 'NOTSET',
|
|
}
|
|
logging._nameToLevel = {
|
|
'CRITICAL': logging.CRITICAL,
|
|
'FATAL': logging.FATAL,
|
|
'ERROR': logging.ERROR,
|
|
'WARN': logging.WARNING,
|
|
'WARNING': logging.WARNING,
|
|
'INFO': logging.INFO,
|
|
'DEBUG': logging.DEBUG,
|
|
'NOTSET': logging.NOTSET,
|
|
}
|
|
|