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.