Как я могу регистрировать и отлаживать в более старом приложении Sinatra API?

#logging #sinatra

#ведение журнала #sinatra

Вопрос:

У меня есть этот старый, простой Sinatra API. Это версия 1.4.8. Это очень просто, и это будет переписано. В краткосрочной перспективе мне нужно добавить к нему несколько инструкций debug, чтобы что-то исправить. Я нахожусь, просто отправляя их в стандартный вывод, чтобы просматривать их в режиме реального времени на экране.

Я видел, что регистратор был включен в версию 1.3, но, похоже, я не могу найти хорошую страницу руководства по его реализации. Мне не нужен сложный класс ведения журнала. Самое большее, что я когда-либо хотел бы сделать, это просто войти в файл. Есть ли простой способ выполнить любое из этих действий без значительных затрат времени?

Ответ №1:

Я нашел эту страницу, которая очень хорошо описывает процесс.

Этот блок кода содержит мои изменения:

 ::Logger.class_eval { alias :write :'<<' }
access_log = ::File.join(::File.dirname(::File.expand_path(__FILE__)),'log','access.log')
$access_logger = ::Logger.new(access_log)
$error_logger = ::File.new(::File.join(::File.dirname(::File.expand_path(__FILE__)),'log','error.log'),"a ")
$error_logger.sync = true

configure :development do
  $access_logger.level = Logger::DEBUG
  use ::Rack::CommonLogger, $access_logger
end

configure :production do
  $access_logger.level = Logger::WARN
  use ::Rack::CommonLogger, $access_logger
end  
  

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

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

 $access_logger.debug "subscription_id is #{subscription_id}."
  

Отлично работает!