Вопрос

Из Руководство по рельсам при отладке я обнаружил, что могу настроить вывод в файлы журналов, используя этот простой метод:

logger.debug "Person attributes hash: #{@person.attributes.inspect}"

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

Я хотел бы видеть номер строки моего кода, где logger#debug был вызван метод.Что-то вроде этого:

logger.debug "Person attributes hash: #{@person.attributes.inspect} from line #{LINE_NUMBER_VAR}"
Это было полезно?

Решение

logger.debug "Person attributes hash: #{@person.attributes.inspect} from line #{__LINE__}"

Другие советы

Используйте декоратор в Logger:

class LoggerDecorator
  def initialize(logger)
    @logger = logger
  end

  %w{debug info warn error fatal}.each do |method|
    eval(<<-eomethod)
      def #{method}(msg)
        @logger.#{method}(position) {msg}
      end
    eomethod
  end

  private
  def position
    caller.at(1).sub(%r{.*/},'').sub(%r{:in\s.*},'')
  end
end

Начиная с Rails 5, это теперь встроено через:

ActiveRecord::Base.verbose_query_logs = true

Видеть документация для большего

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top