Rails: невозможно получить доступ к файлу журнала
При перезагрузке моего приложения rails появляется следующая ошибка. У меня была эта проблема раньше, на другом сервере с другим приложением, но я не могу вспомнить, в чем проблема, или как я ее решил.
Rails Error: Unable to access log file. Please ensure that /apps/staging/releases/20090310162127/log/staging.log exists and is chmod 0666. The log level has been raised to WARN and the output directed to STDERR until the problem is fixed.
Я использую кластер mongrel с capistrano на Ubuntu.
Когда я делаю ls -l /apps/staging/releases/20090310162127/log/staging.log
результат:
-rw-rw-rw- 1 me grp 51 Mar 10 16:07 /apps/staging/releases/20090310162127/log/staging.log
Лог dir - это link
to/apps/промежуточная/общая/журнал.
Что происходит?
Ответы
Ответ 1
Оказалось, что это тонкая ошибка рельсов:
Когда в этих двух строках возникает исключение
logger = ActiveSupport::BufferedLogger.new(configuration.log_path)
logger.level = ActiveSupport::BufferedLogger.const_get(configuration.log_level.to_s.upcase)
rails предполагает, что он не может найти файл журнала. Однако фактическая ошибка произошла во второй строке: NameError, потому что константа неверна. Причина в том, что в моем файле конфигурации был уровень устаревших журналов:
config.log_level = Logger::INFO
Rails 2.2 использует свой собственный регистратор и не понимает вышеприведенную строку.
Решение: удалите строку или используйте:
config.log_level = :info
Ответ 2
Работает ли Rails как me
? Если нет, то какой пользователь работает? Этот пользователь jail
'ed? Имеет ли пользователь разрешения на перемещение для всех компонентов /apps/staging/shared/log
, а также все компоненты /apps/staging/releases/20090310162127/log
?