Как замолчать призыв к действию контроллера рельсов все вместе - PullRequest
4 голосов
/ 10 сентября 2009

Я выяснил, как заставить замолчать содержимое действия, обернув все внутри метода действия в блок logger.silence.

Тем не менее, я все еще получаю призыв к действию, отображаемому в файле журнала.

т.е:

Processing DashboardController#update (for 66.201.17.166 at 2009-09-09 19:03:27) [GET]
  Parameters: {"todos"=>{"user"=>"25", "sfu_type"=>""}}
Completed in 1021ms (View: 439, DB: 438) | 200 OK [http://my.host.com/dashboard/update?todos%5Buser%5D=25&todos%5Bsfu_type%5D=]

Я хочу либо не допустить, чтобы все вышеперечисленное было записано в журналы вместе, либо перенаправить его в другой файл журнала (т.е. dashboard.log), чтобы он не загромождал файл production.log.

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

Ответы [ 5 ]

8 голосов
/ 29 декабря 2009

Поздний ответ, но я потратил довольно много времени на поиск ответа, который таков:

В контроллере, который содержит действие, которое вы хотели бы игнорировать, переопределите метод logger и верните значение по умолчанию для rails для некоторых действий, а также настраиваемый logger или nil для тех, которые требуют специальной обработки.

def logger
  if params[:action] == 'action_to_ignore'
    # return custom logger or nil
  else
    RAILS_DEFAULT_LOGGER
  end
end

Я подозреваю, что есть более простой способ, и хотел бы услышать его, если он существует.

1 голос
/ 30 ноября 2011

Это похоже на действительно хорошее, гибкое решение с использованием промежуточного программного обеспечения: http://dennisreimann.de/blog/silencing-the-rails-log-on-a-per-action-basis/

1 голос
/ 10 сентября 2009

logger звонки разбросаны по всему ActionController::Base. Единственный способ, о котором я могу подумать, - это скомбинировать патч для нескольких методов и проверить имя рассматриваемого контроллера.

Возможно, переопределение этот метод это все, что вам нужно сделать. Точно сказать не могу. Удачи:)

0 голосов
/ 10 сентября 2009

В контроллере приложения вы можете переопределить регистратор:

def log_error(exception)
  #super(exception)
  #do my logging here
end

Я использую это для отправки мне электронных писем при возникновении ошибок в критическом приложении.

0 голосов
/ 10 сентября 2009

Вы установили уровень добычи?

config> environment> production.rb

config.log_level =: предупреждение (по умолчанию: информация)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...