Как повернуть, переопределить или отключить ведение журнала из Sunspot Solr Rubygem?

У меня был большой опыт поиска Sunspot Solr для Ruby on Rails, однако его файлы журналов становятся невероятно большими, и я не могу найти способ ни повернуть, ни переопределить< /strong> или отключить эти журналы (кроме очень хакерских методов, которые я предпочел бы не использовать).

У меня есть файл sunspot.yml в config/, где я попытался установить флаги log_level на СЕРЬЕЗНЫЙ, однако это не имело никакого эффекта.

Однако я попытался использовать стандартные методы ротации Logger.config, которые просто отправляли мои выходные данные журнала разработки во вновь созданные файлы.

Я был бы очень признателен за любые предложения, которые вы можете предложить.


person lightyrs    schedule 12.02.2011    source источник
comment
Я на версии 1.2 драгоценного камня.   -  person lightyrs    schedule 13.02.2011


Ответы (5)


Это немного поздно, но похоже, что это теперь обрабатывается внутри config/sunspot.yml:

production:
  solr:
    hostname: thorn
    port: 8983
    log_level: WARNING
    min_memory: 512M
    max_memory: 1G
    solr_home: /u/solr
person Kevin    schedule 29.07.2012
comment
Я использую 1.3.2, но ИНФОРМАЦИЯ все еще отображается в производственном журнале. - person lulalala; 06.11.2012

В консоли это отключает для меня все журналы:

Sunspot::Rails::LogSubscriber.logger.level = 4
ActiveRecord::Base.logger.level = 4
Rails.logger.level = 4

Мои версии Gem:

  • солнечное пятно (2.0.0.pre.130115)
  • sunspot_rails (2.0.0.pre.130115)
  • sunspot_solr (2.0.0.pre.130115)
person Leslie Viljoen    schedule 13.03.2013

Вы ищете файл Solr logging.properties, чтобы настроить поведение ведения журнала контейнера Java. Sunspot использует Jetty для встроенного экземпляра Solr. Вики Solr содержит инструкции по настройке logging.properties в Jetty по адресу http://wiki.apache.org/solr/LoggingInDefaultJettySetup< /а>.

Возможно, вам придется просмотреть исходный код rake-задач Sunspot, чтобы определить лучшее место для внедрения ваших собственных logging.properties. Я полагаю, что было бы интересно задать этот вопрос в списке рассылки Sunspot для возможного исправления. к Солнечному пятну.

person Nick Zadrozny    schedule 15.02.2011

В настоящее время log_level обрабатывается неправильно. Исправление находится на Github, это версия 2.x.

Вы можете дождаться следующего выпуска драгоценного камня. А если вы этого не делаете и не боитесь риска, то можете использовать в Gemfile следующее:

# use selectively
gem 'sunspot_rails', :git => "git://github.com/sunspot/sunspot.git", :require =>  "sunspot_rails"
gem 'sunspot_solr', :git => "git://github.com/sunspot/sunspot.git", :require => "sunspot_solr"

Я использую Linux logrotate:

/home/path/log/*.log {
  su username pwd
  daily
  missingok
  rotate 7
  delaycompress
  notifempty
  copytruncate
}
person lulalala    schedule 31.01.2013

Я исправил соответствующий файл в sunspot_solr, чтобы решить именно эту проблему.

Этот код недостаточно надежен, чтобы выдержать повторную архитектуру/рефакторинг, выполненный непосредственно в геме sunspot_solr, поэтому я рекомендую заблокировать версию гема sunspot_solr до 1.3.0, чтобы это удалось.

Вы можете добавить следующее в свой проект. Мы используем его в проекте Rails и разместили в lib/sunspot/solr/server.rb:

module Sunspot
  module Solr
    class Server #:nodoc:

      def logging_config_path
        puts "# ==> Using monkey-patched Sunspot::Solr::Server#logging_config_path method"

        return @logging_config_path if defined?(@logging_config_path)
        @logging_config_path =
        if log_file
            logging_config = Tempfile.new('logging.properties')
            logging_config.puts("handlers = java.util.logging.FileHandler")
            logging_config.puts("java.util.logging.FileHandler.level = #{log_level.to_s.upcase}")
            logging_config.puts("java.util.logging.FileHandler.pattern = #{log_file}")
            logging_config.puts("java.util.logging.FileHandler.formatter = java.util.logging.SimpleFormatter")

            # >>> ADDED THE FOLLOWING TWO LINES FOR JAVA-BASED LOG ROTATION <<<
            logging_config.puts("java.util.logging.FileHandler.count = 7")
            logging_config.puts("java.util.logging.FileHandler.limit = 104857600") # 100 megs

            logging_config.flush
            logging_config.close
            logging_config.path
          end
        end


      end # class Server
    end # module Solr
  end # module Sunspot
person Mike Jarema    schedule 09.01.2012