Python logging dict config

From RHS Wiki
Jump to navigation Jump to search
import os
import logging.config

def set_logging(log_level='DEBUG',  # Logging levels available: 'DEBUG', 'INFO', 'WARNING', 'ERROR', 'CRITICAL'
                logs_path="logger.log",
                keep_logs=7,
                log_max_size=52428800  # 50 * 1024 * 1024 bytes
                ):

    logging = {
        'version': 1,
        'disable_existing_loggers': False,
        'formatters': {
            'file_formatter': {
                'format': '%(asctime)s [%(levelname)s] %(name)s: %(message)s %(filename)s %(lineno)d'
            },
            'console_formatter': {
                'format': '%(asctime)s [%(levelname)s] %(name)s: %(message)s\n    └── %(pathname)s %(lineno)d\n'
            },

        },
        'handlers': {
            'logfile': {
                'level': log_level,
                'class': 'logging.handlers.RotatingFileHandler',
                'filename': os.path.join(logs_path, "fotingo.log"),
                'maxBytes': log_max_size,
                'backupCount': keep_logs,
                'formatter': 'file_formatter'
            },
            'error_logfile': {
                'level': 'ERROR',
                'class': 'logging.handlers.RotatingFileHandler',
                'filename': os.path.join(logs_path, "errors.log"),
                'maxBytes': log_max_size,
                'backupCount': keep_logs,
                'formatter': 'file_formatter'
            },
            'console': {
                'level': log_level,
                'formatter': 'console_formatter',
                'class': 'logging.StreamHandler',
            },
        },
        'loggers': {
            '': {
                'handlers': ['logfile', 'console'],
                'level': log_level
            },
            "fotingo": {
                'handlers': ['logfile', 'console', 'error_logfile'],
                'level': log_level,
                'propagate': False,
            },
        }
    }
    return logging
from logger import set_logging
import logging.config

BASE_DIR = '.'
LOGGING = set_logging(logs_path=os.path.join(BASE_DIR, 'logs'))

logging.config.dictConfig(LOGGING)
logger = logging.getLogger('logger')
logger.debug('Test logger')