Rails регистрирует 404 ошибки в отдельном лог-файле

Я сейчас ищу способ зарегистрировать только 404 ошибки в другом файле журнала, чем другие ошибки.

Есть ли способ сделать это с помощью ruby ​​logger или log4r, чтобы регистрация происходила только в новом созданном файле журнала?

2 ответа

Хотя у меня нет конкретной рекомендации, у меня есть некоторый опыт в подобных вещах. Может быть, это поможет...

-

Я написал драгоценный камень под названием exception_handler который в основном вставляет в exceptions_app промежуточное ПО, позволяющее отправлять любые исключения в действие контроллера.

Одна из вещей, которые вы могли бы сделать, - это использовать технологию из этой жемчужины для 404 исключения, и выполните собственную регистрацию с ними:

#config/application.rb
...
config.exceptions_app = ->(env) { ApplicationController.action(:exception).call(env) } 

#app/controllers/application_controller.rb
class ApplicationController < ActionController::Base
   def exception
       @error_code = ActionDispatch::ExceptionWrapper.new(env, @exception).status_code
       [[own logging]] if @status == 404
   end
end

Это было бы началом; Я не знаю, как вы создадите свой собственный файл журнала и т. Д., И это также очень ограниченно в том смысле, что если ошибка будет отличаться от 404, она может истечь.

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

Однако вы можете контролировать, регистрировать ли "не найденные" ошибки или нет - для этого есть директива конфигурации "log_not_found", см. Http://nginx.org/r/log_not_found.

Другие вопросы по тегам