これは、 robのソリューションに基づくDjangoの完全なソリューションです。でmy_module
:
import logging
import logging.handlers
import os
ロギング構成中に発生するclass=
ことは、ロギングモジュールの名前空間で評価され、デフォルトでは、これにはハンドラーへのバインディングがありません。したがって、拡張する前に明示的に挿入する必要があります。このSOの記事を参照してください
logging.handlers = logging.handlers
私が見つけるのに永遠にかかったのはこの魔法の呪文です-私はそれが何もしなかったとは信じられませんでした!最後に、Jonのクラスはエラーなしでロードされます。
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'