Где находится журнал приложений Rails на сервере Ubuntu (nginx + passenger + capistrano)? - PullRequest
0 голосов
/ 13 января 2020

У нас есть приложение Rails 6, которое развертывается на сервере Ubuntu со следующей настройкой:

Nginx 1.17 и пассажир 6, версии развертываются с использованием capistrano v3

I может найти следующие файлы журнала:

  • Nginx (доступ и журналы ошибок):

/var/log/nginx/access.log & /var/log/nginx/error.log

  • Журналы пассажиров: (при постановке env)

/home/deploy/myapp/current/log/staging.log

Журналы, записанные в журналах пассажиров (то есть тот, который должен иметь журнал приложений, как я понимаю), имеет только Ruby журналы для миграции и создания таблиц, но не ruby журнал приложений

Таким образом, ни один из вышеперечисленных журналов не имеет журналов приложений Rails (то есть: журнал, который показывает детали Rails, такие как rails s output в dev env) & журнал доступа nginx показывает только журналы ресурсов stati c при загрузке страницы, но не журналы ruby или sql

Логическое место для меня, staging.log file, содержит только устаревшие данные журнала и не записывает в него новые журналы Rails

Где журналы приложения Rails, пожалуйста?

Ответы [ 2 ]

2 голосов
/ 13 января 2020

Rails записывает свои журналы по умолчанию в файл log/ENVIRONMENT.log (где ENVIRONMENT заменяется значением вашей переменной среды RAILS_ENV.

В вашей рабочей среде, вероятно, записываются журналы /home/deploy/myapp/current/log/production.log

Обратите внимание, что Rails пытается создать этот файл, если он не существует. Если пользователь, запускающий ваше приложение, не имеет необходимых разрешений для создания (или записи в файл), он не вообще не пишите логи.

1 голос
/ 13 января 2020

Руководствуясь комментарием Натана и благодарностью за его решение, он получает:

Причина проблемы:

В staging.rb у меня был этот конфиг для журналов

& переменная env была определена как export RAILS_LOG_TO_STDOUT='enabled'

  # Use default logging formatter so that PID and timestamp are not suppressed.
  config.log_formatter = ::Logger::Formatter.new

  if ENV["RAILS_LOG_TO_STDOUT"].present?
    logger           = ActiveSupport::Logger.new(STDOUT)
    logger.formatter = config.log_formatter
    config.logger = ActiveSupport::TaggedLogging.new(logger)
  end

Итак, удаление переменной env:

RAILS_LOG_TO_STDOUT='enabled'

Разрешено журналу Rails показывать как положено в правильном каталоге:

/home/user/project-name/current/log/staging.log

...