import logging
import logging.config

class IgnorePing(logging.Filter):
    def filter(self, record):
        return 'GET /ping' not in record.getMessage()

LOG_DICT = {
    'version': 1,
    'formatters': {
        'default': {
            'format': '[%(asctime)s] [%(process)d] [%(levelname)7s] %(message)s',
        },
    },
    'filters': {
        'ignore_ping': {
            '()': 'log.IgnorePing',
        },
    },
    'handlers': {
        'wsgi': {
            'class': 'logging.StreamHandler',
            'filters': ['ignore_ping'],
            'stream': 'ext://flask.logging.wsgi_errors_stream',
            'formatter': 'default'
        },
        'console': {
            'level': 'DEBUG',
            'filters': ['ignore_ping'],
            'class': 'logging.StreamHandler',
            'formatter': 'default'
        },
        'null': {
            'level': 'DEBUG',
            'filters': ['ignore_ping'],
            'class': 'logging.NullHandler',
            'formatter': 'default'
        },
    },
    'loggers': {
        'gunicorn': {
            'handlers': ['console'],
            'level': 'DEBUG',
            'propagate': False,
        },
    },
    'root': {
        'level': 'INFO',
        'handlers': ['wsgi']
    }
}

logging.config.dictConfig(LOG_DICT)
logger = logging.getLogger(__name__)

logger.info('Logging enabled.')

from logging_tree import printout
printout()