pratz
9/3/2015 - 4:01 PM

Python dictConfig logging

# std-lib imports
import logging
from logging.config import dictConfig


LOGGING = {
    'version': 1,
    'disable_existing_loggers': False,
    'formatters': {
        'standard': {
            'format': '%(levelname)s:%(name)s: (%(asctime)s; %(filename)s:%(lineno)d): '
                    '%(message)s',
            'datefmt': "%Y-%m-%d %H:%M:%S",
        }
    },
    'handlers': {
        'user_console': {
            'level': 'INFO',
            'formatter': '',
            'class': 'logging.StreamHandler',
        },
        'console': {
            'level': 'DEBUG',
            'formatter': 'standard',
            'class': 'logging.StreamHandler',
        },
        'rotate_file': {
            'level': 'DEBUG',
            'formatter': 'standard',
            'class': 'logging.handlers.RotatingFileHandler',
            'filename': 'rotated.log',
            'encoding': 'utf8',
            'maxBytes': 100000,
            'backupCount': 1,
        }
    },
    'loggers': {
        'dev': {
            'handlers': ['console'],
            'level': 'DEBUG',
        },
        'prod': {
            'handlers': ['user_console'],
            'level': 'INFO',
        },
    }
}

dictConfig(LOGGING)
log = logging.getLogger("dev")
log.propagate = False