Python 即使使用RotatingFileHandler,Django也可以同时记录多个文件?
我将Django与日志配置一起使用,如下所示:Python 即使使用RotatingFileHandler,Django也可以同时记录多个文件?,python,django,python-3.x,django-rest-framework,python-logging,Python,Django,Python 3.x,Django Rest Framework,Python Logging,我将Django与日志配置一起使用,如下所示: LOGGING = { 'version':1, 'disable_existing_loggers': False, 'formatters': { 'verbose': { 'format': '{asctime} {process:d} {thread:d} {levelname} {name} {module} {funcName} {message}',
LOGGING = {
'version':1,
'disable_existing_loggers': False,
'formatters': {
'verbose': {
'format': '{asctime} {process:d} {thread:d} {levelname} {name} {module} {funcName} {message}',
'style': '{',
}
},
'handlers': {
'file': {
'level': 'INFO',
'class': 'logging.handlers.RotatingFileHandler',
'filename': BASE_DIR+'/logs/django_logs.log',
'backupCount': 14,
'maxBytes': 52428800,
'formatter': 'verbose'
}
},
'loggers': {
'': {
'handlers': ['file'],
'level': 'INFO'
}
},
}
import logging
logger = logging.getLogger(__name__)
我正在运行django的16个进程,WebSocket的daphne和基于django rest框架的普通API调用的gunicorn进程很少。但当我查看日志时,会同时记录多个文件。例如,django_logs.1。。。。django.logs.14正在同时登录。我是否必须一次将其他内容添加到一个文件中,并且仅当其大小超过日志文件的指定大小时才对其进行旋转
为了获得更多信息,我正在使用python 3.6.8,并在每个项目文件中初始化记录器,如下所示:
LOGGING = {
'version':1,
'disable_existing_loggers': False,
'formatters': {
'verbose': {
'format': '{asctime} {process:d} {thread:d} {levelname} {name} {module} {funcName} {message}',
'style': '{',
}
},
'handlers': {
'file': {
'level': 'INFO',
'class': 'logging.handlers.RotatingFileHandler',
'filename': BASE_DIR+'/logs/django_logs.log',
'backupCount': 14,
'maxBytes': 52428800,
'formatter': 'verbose'
}
},
'loggers': {
'': {
'handlers': ['file'],
'level': 'INFO'
}
},
}
import logging
logger = logging.getLogger(__name__)
发件人:
虽然日志记录是线程安全的,但是从
支持单个进程中的多个线程,将日志记录到单个进程
不支持来自多个进程的文件,因为没有
跨多个文件序列化访问单个文件的标准方法
Python中的进程。如果您需要从多个站点登录到单个文件
进程,一种方法是将所有进程记录到
,并具有实现套接字的单独进程
从套接字读取数据并记录到文件的服务器。如果你愿意,
您可以在现有进程之一中将一个线程专用于
执行此功能
烹饪书中还详细介绍了这种方法的完整示例
文件还建议了几种替代方法:
或者,您可以使用队列和
将事件记录到多进程中的一个进程
应用
我已经测试了您的日志记录配置,当一个唯一的进程记录到文件处理程序时,它会按预期工作。仅当从以下位置达到maxBytes时,文件才应旋转:
虽然日志记录是线程安全的,但是从
支持单个进程中的多个线程,将日志记录到单个进程
不支持来自多个进程的文件,因为没有
跨多个文件序列化访问单个文件的标准方法
Python中的进程。如果您需要从多个站点登录到单个文件
进程,一种方法是将所有进程记录到
,并具有实现套接字的单独进程
从套接字读取数据并记录到文件的服务器。如果你愿意,
您可以在现有进程之一中将一个线程专用于
执行此功能
烹饪书中还详细介绍了这种方法的完整示例
文件还建议了几种替代方法:
或者,您可以使用队列和
将事件记录到多进程中的一个进程
应用
我已经测试了您的日志记录配置,当一个唯一的进程记录到文件处理程序时,它会按预期工作。仅当达到最大字节数时,文件才应旋转