【问题标题】:How to split Python logging file by file size如何按文件大小拆分 Python 日志文件
【发布时间】:2014-02-17 14:54:33
【问题描述】:

我正在使用 Django 并包含 Python 的默认日志库。我有以下日志配置(在 settings.py 中):

LOGGING = {
    'version': 1,
    'disable_existing_loggers': False,
    'formatters': {
        'verbose': {
            'format' : "[%(asctime)s %(name)s-%(levelname)s (%(filename)s:%(lineno)s %(funcName)s)]: %(message)s",
            'datefmt' : "%d/%b/%Y %H:%M:%S"
        },
        'simple': {
            'format': '[%(asctime)s %(name)s-%(levelname)s]: %(message)s',
            'datefmt' : "%d/%b/%Y %H:%M:%S"
        },
    },
    'handlers': {
        'file-django': {
            'level': 'DEBUG',
            'class': 'logging.FileHandler',
            'filename':  os.path.join(PROJECT_LOGS, 'django.log'),
            'formatter': 'simple'
        },
        'file-application': {
            'level': 'DEBUG',
            'class': 'logging.FileHandler',
            'filename':  os.path.join(PROJECT_LOGS, 'application.log'),
            'formatter': 'simple'
        },
        'file-core': {
            'level': 'DEBUG',
            'class': 'logging.FileHandler',
            'filename':  os.path.join(PROJECT_LOGS, 'core.log'),
            'formatter': 'verbose'
        },
    },
    'loggers': {
        'django': {
            'handlers':['file-django'],
            'propagate': True,
            'level':'DEBUG',
        },
        'application': {
            'handlers': ['file-application'],
            'propagate': True,
            'level': 'DEBUG',
        },
        'core': {
            'handlers': ['file-core'],
            'propagate': True,
            'level': 'DEBUG',
        },
    }
}

我正在尝试仅使用配置拆分结果日志记录文件。我“用谷歌搜索”并找到了一些解决方案,但它们都是基于代码的。

【问题讨论】:

  • 使用RotatingFileHandler有什么问题?
  • 我正在寻找可以使用配置的解决方案。
  • 为什么不能配置呢?
  • 您的请求不清楚,您是否正在寻找一些工具来解析日志?做什么的?您在寻找日志查看器吗?
  • 我正在寻找“如何配置 python 日志记录以登录文件,如果文件大小等于 100MB,则将其拆分为另一个文件”。

标签: python django logging


【解决方案1】:

您可以在配置文件 setting.py 中使用 logging.handlers.RotatingFileHandler,以您的处理程序“file-django”为例,假设您将其拆分为超过 100MB 的新文件:

'file-django': {
    'level': 'DEBUG',
    'class': 'logging.handlers.RotatingFileHandler',
    'filename':  os.path.join(PROJECT_LOGS, 'django.log'),
    'maxBytes': 104857600, # 1024*1024*100B (100MB)
    'backupCount': 10, # keep at most 10 log files
    'formatter': 'simple'
},

参考:https://xxx-cook-book.gitbooks.io/django-cook-book/Logs/Handlers/FileHandler/rotating-file-handler.html

【讨论】:

    【解决方案2】:

    使用Ignacio的评论和look up如何使用RotatingFileHandler;它按文件大小拆分,您可以通过 LOGGING 字典在 Django 中以声明方式配置它。

    【讨论】:

      猜你喜欢
      • 2010-09-19
      • 2015-08-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多