6

我在 Sunspot Solr 搜索 Ruby on Rails 方面有很好的经验,但是,它的日志文件变得非常大,我似乎无法找到一种方法来旋转覆盖关闭这些日志(除了非常我宁愿不追求的hacky方法)。

我在config/中有一个文件sunspot.yml,我尝试将log_level标志设置为SEVERE,但是,这没有效果。

但是,我尝试使用标准的Logger.config轮换方法,它只是将我的开发日志输出发送到新创建的文件。

我将非常感谢您提供的任何建议。

4

5 回答 5

5

有点晚了,但看起来现在在 config/sunspot.yml 中处理了这个:

production:
  solr:
    hostname: thorn
    port: 8983
    log_level: WARNING
    min_memory: 512M
    max_memory: 1G
    solr_home: /u/solr
于 2012-07-29T20:15:28.110 回答
5

在控制台中,这会为我关闭所有日志记录:

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

我的宝石版本:

  • 太阳黑子 (2.0.0.pre.130115)
  • sunspot_rails (2.0.0.pre.130115)
  • sunspot_solr (2.0.0.pre.130115)
于 2013-03-13T03:32:25.533 回答
1

您正在寻找用于logging.properties自定义 Java 容器的日志记录行为的 Solr 文件。Sunspot 将 Jetty 用于其嵌入式 Solr 实例。Solr wiki在http://wiki.apache.org/solr/LoggingInDefaultJettySetuplogging.properties提供了在 Jetty 中 进行自定义的说明。

您可能需要查看 Sunspot 的 rake 任务的源代码,以确定注入您自己的logging.properties. 我想这将是一个有趣的问题,可以在Sunspot 邮件列表中提出一个潜在的 Sunspot 补丁。

于 2011-02-15T02:57:09.447 回答
1

当前未正确处理 log_level。修复在 Github 上,这是一个 2.x 版本。

您可以等待下一个 gem 版本。如果你不害怕也不害怕风险,你可以在 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
}
于 2013-01-31T06:17:26.703 回答
0

我已经在 sunspot_solr 中修补了适当的文件来解决这个确切的问题。

此代码不够健壮,无法直接在 sunspot_solr gem 中进行重新架构/重构,因此我建议将 sunspot_solr gem 版本锁定为 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
于 2012-01-09T16:41:39.873 回答