1
0
Fork 0
mirror of https://github.com/mperham/sidekiq.git synced 2022-11-09 13:52:34 -05:00

Prefer Sidekiq.logger, inject message context into all working logging

This commit is contained in:
Mike Perham 2012-05-15 19:44:35 -07:00
parent 9262fb670d
commit 8c9f960a68
9 changed files with 73 additions and 52 deletions

View file

@ -1,5 +1,5 @@
require 'sidekiq/version'
require 'sidekiq/logger'
require 'sidekiq/logging'
require 'sidekiq/client'
require 'sidekiq/worker'
require 'sidekiq/redis_connection'
@ -91,4 +91,8 @@ module Sidekiq
MultiJson.encode(object)
end
def self.logger
Sidekiq::Logging.logger
end
end

View file

@ -10,7 +10,7 @@ trap 'TERM' do
end
trap 'USR1' do
Sidekiq::Logger.logger.info "Received USR1, no longer accepting new work"
Sidekiq.logger.info "Received USR1, no longer accepting new work"
mgr = Sidekiq::CLI.instance.manager
mgr.stop! if mgr
end
@ -47,13 +47,13 @@ module Sidekiq
def parse(args=ARGV)
@code = nil
Sidekiq::Logger.logger
Sidekiq.logger
cli = parse_options(args)
config = parse_config(cli)
options.merge!(config.merge(cli))
Sidekiq::Logger.logger.level = ::Logger::DEBUG if options[:verbose]
Sidekiq.logger.level = Logger::DEBUG if options[:verbose]
Celluloid.logger = nil
validate!
@ -134,7 +134,7 @@ module Sidekiq
end
o.on "-v", "--verbose", "Print more verbose output" do
Sidekiq::Logger.logger.level = ::Logger::DEBUG
Sidekiq.logger.level = ::Logger::DEBUG
end
o.on '-e', '--environment ENV', "Application environment" do |arg|

View file

@ -1,32 +0,0 @@
require 'time'
require 'logger'
module Sidekiq
module Logger
class Pretty < ::Logger::Formatter
# Provide a call() method that returns the formatted message.
def call(severity, time, program_name, message)
"#{time.utc.iso8601} #{Process.pid} TID-#{Thread.current.object_id.to_s(36)} #{severity}: #{message}\n"
end
end
def self.logger
@logger ||= begin
log = ::Logger.new(STDOUT)
log.level = ::Logger::INFO
log.formatter = Pretty.new
log
end
end
def self.logger=(log)
@logger = (log ? log : ::Logger.new('/dev/null'))
end
def logger
Sidekiq::Logger.logger
end
end
end

46
lib/sidekiq/logging.rb Normal file
View file

@ -0,0 +1,46 @@
require 'time'
require 'logger'
module Sidekiq
module Logging
class Pretty < Logger::Formatter
# Provide a call() method that returns the formatted message.
def call(severity, time, program_name, message)
"#{time.utc.iso8601} #{Process.pid} TID-#{Thread.current.object_id.to_s(36)}#{context} #{severity}: #{message}\n"
end
def context
c = Thread.current[:sidekiq_context]
c ? " #{c}" : ''
end
end
def self.with_context(msg)
begin
Thread.current[:sidekiq_context] = msg
yield
ensure
Thread.current[:sidekiq_context] = nil
end
end
def self.logger
@logger ||= begin
log = Logger.new(STDOUT)
log.level = Logger::INFO
log.formatter = Pretty.new
log
end
end
def self.logger=(log)
@logger = (log ? log : Logger.new('/dev/null'))
end
def logger
Sidekiq::Logging.logger
end
end
end

View file

@ -4,14 +4,17 @@ module Sidekiq
class Logging
def call(*args)
static = "#{args[0].class.to_s} MSG-#{args[0].object_id.to_s(36)}" if logger.info?
start = Time.now
logger.info { "#{static} start" }
yield
logger.info { "#{static} done: #{elapsed(start)} sec" }
rescue
logger.info { "#{static} fail: #{elapsed(start)} sec" }
raise
Sidekiq::Logging.with_context("#{args[0].class.to_s} MSG-#{args[0].object_id.to_s(36)}") do
begin
start = Time.now
logger.info { "start" }
yield
logger.info { "done: #{elapsed(start)} sec" }
rescue
logger.info { "fail: #{elapsed(start)} sec" }
raise
end
end
end
def elapsed(start)
@ -19,7 +22,7 @@ module Sidekiq
end
def logger
Sidekiq::Logger.logger
Sidekiq.logger
end
end
end

View file

@ -26,7 +26,7 @@ module Sidekiq
end
def logger
Sidekiq::Logger.logger
Sidekiq.logger
end
def redis(&block)

View file

@ -25,7 +25,7 @@ module Sidekiq
end
def logger
Sidekiq::Logger.logger
Sidekiq.logger
end
module ClassMethods

View file

@ -10,7 +10,7 @@ require 'minitest/autorun'
require 'sidekiq'
require 'sidekiq/util'
Sidekiq::Logger.logger.level = Logger::ERROR
Sidekiq.logger.level = Logger::ERROR
require 'sidekiq/redis_connection'
REDIS = Sidekiq::RedisConnection.create(:url => "redis://localhost/15", :namespace => 'testy')

View file

@ -51,11 +51,11 @@ class TestCli < MiniTest::Unit::TestCase
end
it 'sets verbose' do
old = Sidekiq::Logger.logger.level
old = Sidekiq.logger.level
@cli.parse(['sidekiq', '-v', '-r', './test/fake_env.rb'])
assert_equal ::Logger::DEBUG, Sidekiq::Logger.logger.level
assert_equal Logger::DEBUG, Sidekiq.logger.level
# If we leave the logger at DEBUG it'll add a lot of noise to the test output
Sidekiq::Logger.logger.level = old
Sidekiq.logger.level = old
end
describe 'with pidfile' do