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='')
def setup_logger(logger: logging.Logger, level: Level) -> None:
def setup_logger(logger: logging.Logger, level: LevelIsh) -> None:
lvl = mklevel(level)
try:
import logzero # type: ignore
except ModuleNotFoundError:
import warnings
warnings.warn("You might want to install 'logzero' for nice colored logs!")
logger.setLevel(level)
logger.setLevel(lvl)
h = logging.StreamHandler()
h.setLevel(level)
h.setLevel(lvl)
h.setFormatter(logging.Formatter(fmt=_FMT_NOCOLOR))
logger.addHandler(h)
else:
@ -35,7 +36,7 @@ def setup_logger(logger: logging.Logger, level: Level) -> None:
fmt=_FMT_COLOR,
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):
@ -43,13 +44,11 @@ class LazyLogger(logging.Logger):
def __new__(cls, name, level: LevelIsh = 'DEBUG'):
logger = logging.getLogger(name)
lvl = mklevel(level)
# 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):
att = 'lazylogger_init_done'
if not getattr(logger, att, False): # init once, if necessary
setup_logger(logger, level=lvl)
setup_logger(logger, level=level)
setattr(logger, att, True)
return orig(*args, **kwargs)

View file

@ -222,6 +222,17 @@ def events(*args, **kwargs) -> List[Event]:
evit = _get_events(inp, *args, **kwargs)
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 ),
}
##