Django 使用 TimedRotatingFileHandler 记录 PermissionError

2023-12-12

我试图让 Django 每 10 分钟创建并轮换新日志TimedRotatingFileHandler。我的设置如下:

LOGGING = {
    'version': 1,
    'disable_existing_loggers': False,
    'handlers': {
        'file': {
            'level': 'DEBUG',
            'class':'logging.handlers.TimedRotatingFileHandler',
            'filename': 'logs/site.log',
            'backupCount': 10,
            'when':'m',
            'interval':10,
        },
    },
    'loggers': {
        'django': {
            'handlers': ['file'],
            'level': 'DEBUG',
            'propagate': True,
        },
    },
}

第一个日志文件已成功创建。但是当需要轮换日志文件时,我收到以下错误:

PermissionError: [WinError 32] The process cannot access the file because it is being used by another process: 'F:\\logs\\site.log' -> 'F:\\logs\\site.log.2021-05-22_19-18'

如何配置日志记录,以便将当前日志复制到定时日志并将新数据写入主日志文件?


不幸的是,这个文件处理程序不适合 Windows,因为任何打开的文件都无法移动或重命名。因为在使用时它在某些情况下可能工作得很好./manage.py runserver,当尝试将它与任何生产就绪的 wsgi 或 asgi 服务器一起使用时,它将失败,因为这些服务器正在生成多个进程,而这些进程不知道其他进程打开了日志文件。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Django 使用 TimedRotatingFileHandler 记录 PermissionError 的相关文章

随机推荐