Django log rotating и доступ к файлам журналов
У меня есть регистрация приложения django 1.4.2, идущая во вращающиеся файлы.
В моем settings.py у меня есть:
LOGGING = {
'version': 1,
'disable_existing_loggers': True,
'formatters': {
'standard': {
'format': '%(asctime)s [%(levelname)s] %(name)s: %(message)s'
},
},
'handlers': {
'default': {
'level':'DEBUG',
'class':'logging.handlers.RotatingFileHandler',
'filename': '/var/www/html/logs/mylog.log',
'maxBytes': 1024*1024*5, # 5 MB
'backupCount': 5,
'formatter':'standard',
},
'request_handler': {
'level':'DEBUG',
'class':'logging.handlers.RotatingFileHandler',
'filename': '/var/www/html/logs/django_request.log',
'maxBytes': 1024*1024*5, # 5 MB
'backupCount': 5,
'formatter':'standard',
},
},
'loggers': {
'': {
'handlers': ['default'],
'level': 'ERROR',
'propagate': True
},
'django.request': { # Stop SQL debug from logging to main logger
'handlers': ['request_handler'],
'level': 'DEBUG',
'propagate': False
},
}
}
Итак, в каталоге регистрации я вижу файлы:
mc.log
mc.log.1
mc.log.2
mc.log.3
mc.log.4
mc.log.5
Когда mc.log достигнет 5M, файлы будут правильно повернуты, но новый mc.log будет создан с правами root.root.
Поскольку apache работает под пользователем apache, он больше не может обращаться к файлам, и приложение перестает работать.
Любая идея, почему новый журнал создан с правами root.root вместо apache.apache?
Спасибо
Ответы
Ответ 1
Новые файлы могут быть созданы, если это разрешает пользователь/группа родительского каталога. Я считаю, что вам нужно либо изменить владельца каталога, либо добавить группу в каталог, который включает пользователей apache, или использовать некоторые продвинутые методы, такие как ACL.
Чтобы проверить это, попробуйте следующее: Войдите в систему с правами администратора. Переключитесь на пользователя apache. Попробуйте создать файл вручную. Вернитесь к корню, измените права доступа/владельца папки, переключитесь на пользователя apache, повторите попытку. Это должно дать вам дополнительную информацию о том, не сработает ли script при попытке создать файл.
Наконец, это немного нелогично, убедитесь, что пользователь Apache каким-то образом имеет разрешение на выполнение в этом каталоге, иначе он не позволит вам вставлять в него.
Кроме того, я думаю, вам нужно будет установить бит "s" в каталоге (chmod g+s
или chmod 2755
и т.д.), чтобы новые добавленные файлы наследовали разрешения каталога. Затем вам нужно убедиться, что бит группы установлен, а группе принадлежит каталог. (или вы можете установить группу каталога в www-data).