Skip to main content

支持按时间滚动的Python多进程日志Handler

Project description

MultProcTimedRotatingFileHandler

支持按时间滚动的Python多进程日志Handler, 支支持macOS/Linux, 自用未充分测试

参考了 https://github.com/yorks/mpfhandler, 有如下优化

  • 添加了intervel支持
  • 支持备份自动清理
  • 使用MMAP优化了性能

性能基准

8核CPU, 8进程, 100000条长度47字符日志测试, 相比TimedRotatingFileHandler大约有25%-30%性能损耗

随着进程数增大, 锁竞争也变激烈了, 性能损耗也会进一步增大, 100进程下会有50%-60%性能损耗

8进程, QPS情况

  • MultProcTimedRotatingFileHandler: 23482
  • TimedRotatingFileHandler: 30349

配置示例

import logging.config

LOGGING_CONFIG = {
    'version': 1,
    'disable_existing_loggers': False,
    'formatters': {
        'verbose': {
            'format': '[%(levelname)s %(asctime)s %(name)s %(lineno)d %(process)d %(thread)d] %(message)s'
        },
    },
    'handlers': {
        'console': {
            'level': 'INFO',
            'class': 'logging.StreamHandler',
            'formatter': 'simple'
        },
        'backend_file':{
            'class': 'mptrfhandler.MultProcTimedRotatingFileHandler',
            'filename': 'main.log',
            'when': 'H',  # 按小时滚动
            'backupCount': 10,                                   #备份份数
            'formatter':'verbose',                              #使用哪种formatters日志格式
            'level': 'DEBUG',
            'delay': True,
        },
    },
    'loggers': {
        '': {
            'handlers': ['backend_file'],
            'level': "INFO",
            'propagate': False,
        },
    },
}

logging.config.dictConfig(LOGGING_CONFIG)

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

mptrfhandler-0.0.8.tar.gz (8.1 kB view hashes)

Uploaded Source

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page