"""Logging config and utility functions.""" import logging import logging.config class StdoutFilter(logging.Filter): """Stdout filter.""" def filter(self, rec): """Filter out everything > INFO.""" return rec.levelno <= logging.INFO config = { 'version': 1, 'disable_existing_loggers': False, 'formatters': { 'verbose': { 'format': '%(asctime)s - %(name)s - %(levelname)s - %(message)s' }, 'simple': { 'format': '%(levelname)s %(message)s' }, }, 'filters': { 'stdout_filter': { '()': StdoutFilter } }, 'handlers': { 'console_out': { 'level': 'DEBUG', 'class': 'logging.StreamHandler', 'formatter': 'verbose', 'stream': 'ext://sys.stdout', 'filters': ['stdout_filter'] }, 'console_err': { 'level': 'WARNING', 'class': 'logging.StreamHandler', 'formatter': 'verbose', 'stream': 'ext://sys.stderr' }, }, 'loggers': { '': { 'handlers': ['console_out', 'console_err'], 'level': 'INFO', 'filters': [], 'propogate': True } } } def init_logging(): """Init logging.""" logging.config.dictConfig(config)