reddit: add stats()

This commit is contained in:
Dima Gerasimov 2020-07-28 22:43:37 +01:00 committed by karlicoss
parent a9ae6dbb7f
commit 4ee89b85ee
2 changed files with 17 additions and 7 deletions

View file

@ -19,15 +19,16 @@ _FMT_COLOR = _FMT.format(start='%(color)s', end='%(end_color)s')
_FMT_NOCOLOR = _FMT.format(start='', end='') _FMT_NOCOLOR = _FMT.format(start='', end='')
def setup_logger(logger: logging.Logger, level: Level) -> None: def setup_logger(logger: logging.Logger, level: LevelIsh) -> None:
lvl = mklevel(level)
try: try:
import logzero # type: ignore import logzero # type: ignore
except ModuleNotFoundError: except ModuleNotFoundError:
import warnings import warnings
warnings.warn("You might want to install 'logzero' for nice colored logs!") warnings.warn("You might want to install 'logzero' for nice colored logs!")
logger.setLevel(level) logger.setLevel(lvl)
h = logging.StreamHandler() h = logging.StreamHandler()
h.setLevel(level) h.setLevel(lvl)
h.setFormatter(logging.Formatter(fmt=_FMT_NOCOLOR)) h.setFormatter(logging.Formatter(fmt=_FMT_NOCOLOR))
logger.addHandler(h) logger.addHandler(h)
else: else:
@ -35,7 +36,7 @@ def setup_logger(logger: logging.Logger, level: Level) -> None:
fmt=_FMT_COLOR, fmt=_FMT_COLOR,
datefmt=None, # pass None to prevent logzero from messing with date format datefmt=None, # pass None to prevent logzero from messing with date format
) )
logzero.setup_logger(logger.name, level=level, formatter=formatter) logzero.setup_logger(logger.name, level=lvl, formatter=formatter)
class LazyLogger(logging.Logger): class LazyLogger(logging.Logger):
@ -43,13 +44,11 @@ class LazyLogger(logging.Logger):
def __new__(cls, name, level: LevelIsh = 'DEBUG'): def __new__(cls, name, level: LevelIsh = 'DEBUG'):
logger = logging.getLogger(name) logger = logging.getLogger(name)
lvl = mklevel(level)
# this is called prior to all _log calls so makes sense to do it here? # this is called prior to all _log calls so makes sense to do it here?
def isEnabledFor_lazyinit(*args, logger=logger, orig=logger.isEnabledFor, **kwargs): def isEnabledFor_lazyinit(*args, logger=logger, orig=logger.isEnabledFor, **kwargs):
att = 'lazylogger_init_done' att = 'lazylogger_init_done'
if not getattr(logger, att, False): # init once, if necessary if not getattr(logger, att, False): # init once, if necessary
setup_logger(logger, level=lvl) setup_logger(logger, level=level)
setattr(logger, att, True) setattr(logger, att, True)
return orig(*args, **kwargs) return orig(*args, **kwargs)

View file

@ -222,6 +222,17 @@ def events(*args, **kwargs) -> List[Event]:
evit = _get_events(inp, *args, **kwargs) evit = _get_events(inp, *args, **kwargs)
return list(sorted(evit, key=lambda e: e.cmp_key)) return list(sorted(evit, key=lambda e: e.cmp_key))
def stats():
from .core import stat
return {
**stat(saved ),
**stat(comments ),
**stat(submissions),
**stat(upvoted ),
}
## ##