0x02 Python logging Module Loads logger Using Configuration

Keywords: Python

Catalog

logging module loads logger with configuration

Log. config module provides the creation of logger and other related objects from configuration loading and caching them in manager object. So record the model mode configurated in several general ways to facilitate the direct modification and use of copy in the project.

dict config references Official Document Description of logging Configuration Dictionary

Method template: logging.config.dictConfig(config_dict)

Cong_dict Dictionary Template

    cfg = {
        'version': 1,
        'formatters': {
            'detailed': {
                'class': 'logging.Formatter',
                'format': '%(asctime)s %(name)-15s %(levelname)-8s %(processName)-10s %(message)s'
            }
        },
        'handlers': {
            'console': {
                'class': 'logging.StreamHandler',
                'level': 'INFO',
            },
            'file': {
                'class': 'logging.FileHandler',
                'filename': 'mplog.log',
                'mode': 'w',
                'formatter': 'detailed',
            },
            'foofile': {
                'class': 'logging.FileHandler',
                'filename': 'mplog-foo.log',
                'mode': 'w',
                'formatter': 'detailed',
            },
            'errors': {
                'class': 'logging.FileHandler',
                'filename': 'mplog-errors.log',
                'mode': 'w',
                'level': 'ERROR',
                'formatter': 'detailed',
            },
        },
        'loggers': {
            'foo': {
                'handlers': ['foofile']
            }
        },
        'root': {
            'level': 'DEBUG',
            'handlers': ['console', 'file', 'errors']
        },
    }

Template two:

LOGGER_CONFIG_DICT = {
        'version': 1,
        'formatters': {
            'detailed_fmt': {
                'class': 'logging.Formatter',
                'format': '%(asctime)s %(created)s %(levelname)-6s %(name)-15s %(processName)s:%(threadName)s %(message)s'
                #  human-readable  timestamp levelname logger_name  processname threadname  message
            },
            'simple_fmt': {
                'class': 'logging.Formatter',
                'format': '%(asctime)s %(levelname)-8s %(name)-15s %(message)s'
                #  human-readable  levelname logger_name message
            },
            'portal_fmt': {
                'class': 'logging.Formatter',
                # 'datefmt': '%Y-%m-%d %H:%M:%S,uuu',  # This is the actual default format.
                'format': '%(asctime)s %(levelname)-8s %(name)-15s  %(processName)-10s %(message)s'
            },
            'system_fmt': {
                'class': 'logging.Formatter',
                'format': '%(asctime)s %(name)-15s %(levelname)-8s %(processName)-10s %(message)s'
            },
        },
        'handlers': {
            # 'console_hd': {
            #     'class': 'logging.StreamHandler',
            #     'level': 'INFO'
            # },
            'time_rotate_file_hd': {
                'class': 'logging.handlers.TimedRotatingFileHandler',
                'filename': './logs/selfservices1.log',
                'when': 'M',
                'interval': 5,
                'backupCount': 100,
                'formatter': 'simple_fmt'
            },
            'file_size_rotate_hd': {
                'class': 'logging.handlers.RotatingFileHandler',
                'filename': './logs/portal.log',
                'mode': 'a',
                'maxBytes': 1024 * 1024 * 5,
                'backupCount': 50,
                'formatter': 'portal_fmt'
            },
            'errors_hd': {
                'class': 'logging.FileHandler',
                'filename': './logs/errors.log',
                'formatter': 'detailed_fmt',
                'level': 'ERROR'  # Only logs with errors of 40 or more
            },
            'system_hd': {
                'class': 'logging.FileHandler',
                'filename': './logs/system.log',
                'formatter': 'simple_fmt'
            }
        },
        'loggers': {
            'selfservices': {
                'level': 'INFO',
                'handlers': ['file_size_rotate_hd', 'errors_hd']
                # 'handlers': ['time_rotate_file_hd', 'file_size_rotate_hd', 'errors_hd']
            }
        },
        'root': {
            'level': 'DEBUG',
            'handlers': ['system_hd', 'errors_hd']
        },
    }

Posted by jozard on Tue, 01 Oct 2019 13:11:16 -0700