Вот полное решение для Django, основанное на решении rob . в my_module
:
import logging
import logging.handlers
import os
Значение class=
, которое происходит во время конфигурации ведения журнала, оценивается в пространстве имен модуля ведения журнала, и по умолчанию оно не имеет привязки к обработчикам. Таким образом, мы должны вставить это явно, прежде чем мы сможем расширить его. См. эту статью SO
logging.handlers = logging.handlers
Это волшебное заклинание, которое привело меня навсегда, чтобы найти - я не мог поверить, что он что-то сделал! Наконец, класс Джона загрузится без ошибок.
class GroupWriteRotatingFileHandler(logging.handlers.RotatingFileHandler):
def _open(self):
prevumask = os.umask(0o002)
rtv = logging.handlers.RotatingFileHandler._open(self)
os.umask(prevumask)
return rtv
Чтобы использовать это для Django, добавьте следующее в файл настроек
from my_module import GroupWriteRotatingFileHandler
logging.handlers.GroupWriteRotatingFileHandler = GroupWriteRotatingFileHandler
А затем в LOGGING['handlers']['file']
у вас есть
'class': 'logging.handlers.GroupWriteRotatingFileHandler'