我在 Sunspot Solr 搜索 Ruby on Rails 方面有很好的经验,但是,它的日志文件变得非常大,我似乎无法找到一种方法来旋转、覆盖或关闭这些日志(除了非常我宁愿不追求的hacky方法)。
我在config/中有一个文件sunspot.yml,我尝试将log_level标志设置为SEVERE,但是,这没有效果。
但是,我尝试使用标准的Logger.config轮换方法,它只是将我的开发日志输出发送到新创建的文件。
我将非常感谢您提供的任何建议。
我在 Sunspot Solr 搜索 Ruby on Rails 方面有很好的经验,但是,它的日志文件变得非常大,我似乎无法找到一种方法来旋转、覆盖或关闭这些日志(除了非常我宁愿不追求的hacky方法)。
我在config/中有一个文件sunspot.yml,我尝试将log_level标志设置为SEVERE,但是,这没有效果。
但是,我尝试使用标准的Logger.config轮换方法,它只是将我的开发日志输出发送到新创建的文件。
我将非常感谢您提供的任何建议。
有点晚了,但看起来现在在 config/sunspot.yml 中处理了这个:
production:
solr:
hostname: thorn
port: 8983
log_level: WARNING
min_memory: 512M
max_memory: 1G
solr_home: /u/solr
在控制台中,这会为我关闭所有日志记录:
Sunspot::Rails::LogSubscriber.logger.level = 4
ActiveRecord::Base.logger.level = 4
Rails.logger.level = 4
我的宝石版本:
您正在寻找用于logging.properties
自定义 Java 容器的日志记录行为的 Solr 文件。Sunspot 将 Jetty 用于其嵌入式 Solr 实例。Solr wiki在http://wiki.apache.org/solr/LoggingInDefaultJettySetuplogging.properties
提供了在 Jetty 中
进行自定义的说明。
您可能需要查看 Sunspot 的 rake 任务的源代码,以确定注入您自己的logging.properties
. 我想这将是一个有趣的问题,可以在Sunspot 邮件列表中提出一个潜在的 Sunspot 补丁。
当前未正确处理 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
}
我已经在 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