Подтвердить что ты не робот

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?

Спасибо

4b9b3361

Ответ 1

Новые файлы могут быть созданы, если это разрешает пользователь/группа родительского каталога. Я считаю, что вам нужно либо изменить владельца каталога, либо добавить группу в каталог, который включает пользователей apache, или использовать некоторые продвинутые методы, такие как ACL.

Чтобы проверить это, попробуйте следующее: Войдите в систему с правами администратора. Переключитесь на пользователя apache. Попробуйте создать файл вручную. Вернитесь к корню, измените права доступа/владельца папки, переключитесь на пользователя apache, повторите попытку. Это должно дать вам дополнительную информацию о том, не сработает ли script при попытке создать файл.

Наконец, это немного нелогично, убедитесь, что пользователь Apache каким-то образом имеет разрешение на выполнение в этом каталоге, иначе он не позволит вам вставлять в него.

Кроме того, я думаю, вам нужно будет установить бит "s" в каталоге (chmod g+s или chmod 2755 и т.д.), чтобы новые добавленные файлы наследовали разрешения каталога. Затем вам нужно убедиться, что бит группы установлен, а группе принадлежит каталог. (или вы можете установить группу каталога в www-data).