mirror of
https://github.com/mperham/sidekiq.git
synced 2022-11-09 13:52:34 -05:00
Add option to write logs to a file
This commit is contained in:
parent
b9fc720127
commit
d2c2da6be9
4 changed files with 75 additions and 10 deletions
|
@ -56,15 +56,12 @@ module Sidekiq
|
|||
|
||||
def parse(args=ARGV)
|
||||
@code = nil
|
||||
Sidekiq.logger
|
||||
|
||||
cli = parse_options(args)
|
||||
config = parse_config(cli)
|
||||
options.merge!(config.merge(cli))
|
||||
|
||||
Sidekiq.logger.level = Logger::DEBUG if options[:verbose]
|
||||
Celluloid.logger = nil unless options[:verbose]
|
||||
|
||||
initialize_logger
|
||||
validate!
|
||||
write_pid
|
||||
boot_system
|
||||
|
@ -200,6 +197,10 @@ module Sidekiq
|
|||
opts[:config_file] = arg
|
||||
end
|
||||
|
||||
o.on '-L', '--logfile PATH', "path to writable logfile" do |arg|
|
||||
opts[:logfile] = arg
|
||||
end
|
||||
|
||||
o.on '-V', '--version', "Print version and exit" do |arg|
|
||||
puts "Sidekiq #{Sidekiq::VERSION}"
|
||||
die(0)
|
||||
|
@ -215,6 +216,17 @@ module Sidekiq
|
|||
opts
|
||||
end
|
||||
|
||||
def initialize_logger
|
||||
if options[:logfile]
|
||||
Sidekiq.logger = Sidekiq::Logging.new_file_logger(options[:logfile])
|
||||
else
|
||||
Sidekiq.logger
|
||||
end
|
||||
|
||||
Sidekiq.logger.level = Logger::DEBUG if options[:verbose]
|
||||
Celluloid.logger = nil unless options[:verbose]
|
||||
end
|
||||
|
||||
def write_pid
|
||||
if path = options[:pidfile]
|
||||
File.open(path, 'w') do |f|
|
||||
|
|
|
@ -25,13 +25,12 @@ module Sidekiq
|
|||
end
|
||||
end
|
||||
|
||||
def self.new_file_logger(file_path)
|
||||
initialize_logger(file_path)
|
||||
end
|
||||
|
||||
def self.logger
|
||||
@logger ||= begin
|
||||
log = Logger.new(STDOUT)
|
||||
log.level = Logger::INFO
|
||||
log.formatter = Pretty.new
|
||||
log
|
||||
end
|
||||
@logger ||= initialize_logger(STDOUT)
|
||||
end
|
||||
|
||||
def self.logger=(log)
|
||||
|
@ -42,5 +41,13 @@ module Sidekiq
|
|||
Sidekiq::Logging.logger
|
||||
end
|
||||
|
||||
private
|
||||
|
||||
def self.initialize_logger(log_target)
|
||||
log = Logger.new(log_target)
|
||||
log.level = Logger::INFO
|
||||
log.formatter = Pretty.new
|
||||
log
|
||||
end
|
||||
end
|
||||
end
|
||||
|
|
|
@ -3,6 +3,7 @@
|
|||
:environment: xzibit
|
||||
:require: ./test/fake_env.rb
|
||||
:pidfile: /tmp/sidekiq-config-test.pid
|
||||
:logfile: /tmp/sidekiq.log
|
||||
:concurrency: 50
|
||||
:queues:
|
||||
- [<%="very_"%>often, 2]
|
||||
|
|
|
@ -83,6 +83,47 @@ class TestCli < MiniTest::Unit::TestCase
|
|||
Sidekiq.logger.level = old
|
||||
end
|
||||
|
||||
describe 'with logfile' do
|
||||
before do
|
||||
@old_logger = Sidekiq.logger
|
||||
@tmp_log_path = '/tmp/sidekiq.log'
|
||||
end
|
||||
|
||||
after do
|
||||
Sidekiq.logger = @old_logger
|
||||
Sidekiq.options.delete(:logfile)
|
||||
File.unlink @tmp_log_path if File.exists?(@tmp_log_path)
|
||||
end
|
||||
|
||||
it 'sets the logfile path' do
|
||||
@cli.parse(['sidekiq', '-L', @tmp_log_path, '-r', './test/fake_env.rb'])
|
||||
|
||||
assert_equal @tmp_log_path, Sidekiq.options[:logfile]
|
||||
end
|
||||
|
||||
it 'creates and writes to a logfile' do
|
||||
@cli.parse(['sidekiq', '-L', @tmp_log_path, '-r', './test/fake_env.rb'])
|
||||
|
||||
Sidekiq.logger.info('test message')
|
||||
|
||||
assert_match /test message/, File.read(@tmp_log_path), "didn't include the log message"
|
||||
end
|
||||
|
||||
it 'appends messages to a logfile' do
|
||||
File.open(@tmp_log_path, 'w') do |f|
|
||||
f.puts 'already existant log message'
|
||||
end
|
||||
|
||||
@cli.parse(['sidekiq', '-L', @tmp_log_path, '-r', './test/fake_env.rb'])
|
||||
|
||||
Sidekiq.logger.info('test message')
|
||||
|
||||
log_file_content = File.read(@tmp_log_path)
|
||||
assert_match /already existant/, log_file_content, "didn't include the old message"
|
||||
assert_match /test message/, log_file_content, "didn't include the new message"
|
||||
end
|
||||
end
|
||||
|
||||
describe 'with pidfile' do
|
||||
before do
|
||||
@tmp_file = Tempfile.new('sidekiq-test')
|
||||
|
@ -134,6 +175,10 @@ class TestCli < MiniTest::Unit::TestCase
|
|||
assert_equal '/tmp/sidekiq-config-test.pid', Sidekiq.options[:pidfile]
|
||||
end
|
||||
|
||||
it 'sets logfile' do
|
||||
assert_equal '/tmp/sidekiq.log', Sidekiq.options[:logfile]
|
||||
end
|
||||
|
||||
it 'sets queues' do
|
||||
assert_equal 2, Sidekiq.options[:queues].count { |q| q == 'very_often' }
|
||||
assert_equal 1, Sidekiq.options[:queues].count { |q| q == 'seldom' }
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue