import logging from logging.handlers import RotatingFileHandler from raven.contrib.flask import Sentry def init_loggers(app): if 'LOG_FILE_ENABLED' in app.config and app.config['LOG_FILE_ENABLED']: _add_file_handler(app, app.config['LOG_FILE']) if 'LOG_SENTRY_ENABLED' in app.config and app.config['LOG_SENTRY_ENABLED']: _add_sentry(app, logging.WARNING) def _add_file_handler(app, filename, max_bytes=512 * 1024, backup_count=100): """Adds file logging.""" file_handler = RotatingFileHandler(filename, maxBytes=max_bytes, backupCount=backup_count) file_handler.setFormatter(logging.Formatter( '%(asctime)s %(levelname)s: %(message)s ' '[in %(pathname)s:%(lineno)d]' )) app.logger.addHandler(file_handler) def _add_sentry(app, level=logging.NOTSET): """Adds Sentry logging. Sentry is a realtime event logging and aggregation platform. Additional information about it is available at https://sentry.readthedocs.org/. We use Raven as a client for Sentry. More info about Raven is available at https://raven.readthedocs.org/. """ Sentry(app, logging=True, level=level)