Skip to content

Commit

Permalink
Merge commit 'core/workling-status' into development
Browse files Browse the repository at this point in the history
  • Loading branch information
cykod committed Mar 17, 2010
2 parents 31b6522 + a2c1dce commit f7b9c0e
Show file tree
Hide file tree
Showing 4 changed files with 51 additions and 2 deletions.
32 changes: 32 additions & 0 deletions app/workers/workling_status_worker.rb
@@ -0,0 +1,32 @@

class WorklingStatusWoker < Workling::Base #:nodoc:all
def do_work(args)
workling_classes = {}
Workling::Discovery.discovered.each { |clazz| workling_classes[clazz.name] = nil }

Thread.list.each do |t|
next unless t.key?(:name)
name = t[:name]
workling_classes[name] = t if workling_classes.include?(name)
end

workling_classes.each do |name, t|
status = ''
if t.nil?
status = DevelopmentLogger.wrap_msg("not running", '31')
else
if t.status.nil?
status = DevelopmentLogger.wrap_msg("raised an exception", '31')
elsif t.status === false
status = DevelopmentLogger.wrap_msg("terminated normally", '31')
elsif t.status == 'aborting'
status = DevelopmentLogger.wrap_msg("aborting", '31')
else
status = DevelopmentLogger.wrap_msg("running", '33')
end
end

logger.warn("#{name} status:#{status}, #{t.inspect}")
end
end
end
6 changes: 5 additions & 1 deletion config/environment.rb
Expand Up @@ -124,7 +124,11 @@ def webiva_remove_load_paths(file)
Workling::Remote.dispatcher = Workling::Remote::Runners::StarlingRunner.new
Workling::Return::Store::Base # Load the base module first
Workling::Return::Store.instance = CACHE

if RAILS_ENV == 'production'
Workling::Base.logger = ActiveSupport::BufferedLogger.new(File.dirname(__FILE__) + "/../log/workling_#{RAILS_ENV}.log", ActiveSupport::BufferedLogger::INFO)
else
Workling::Base.logger = DevelopmentLogger.new(File.dirname(__FILE__) + "/../log/workling_#{RAILS_ENV}.log", 0, 0)
end

ActionMailer::Base.logger = nil unless RAILS_ENV == 'development'

Expand Down
12 changes: 12 additions & 0 deletions lib/development_logger.rb
@@ -1,5 +1,12 @@

class DevelopmentLogger < Logger
def initialize(logdev, shift_age = 0, shift_size = 1048576)
super
if logdev && logdev.to_s.include?('.log')
@error_logdev = LogDevice.new(logdev.to_s.sub('.log', '.error_log'), :shift_age => shift_age, :shift_size => shift_size)
end
end

def add(severity, message = nil, progname = nil, &block)
severity ||= UNKNOWN
if @logdev.nil? or severity < @level
Expand All @@ -16,6 +23,7 @@ def add(severity, message = nil, progname = nil, &block)
end
msg = format_message(format_severity(severity), Time.now, progname, message)
@logdev.write(color_special_msg(msg, severity))
@error_logdev.write(msg) if @error_logdev && severity > INFO
true
end

Expand All @@ -35,4 +43,8 @@ def color_special_msg(msg, severity)

msg.sub(/^/, "\033[#{sub_color}m \033[0m ")
end

def self.wrap_msg(msg, style)
"\033[#{style}m#{msg}\033[0m"
end
end
Expand Up @@ -66,7 +66,8 @@ def stop
# Listen for one worker class
def clazz_listen(clazz)
# logger.debug("Listener thread #{clazz.name} started")

Thread.current[:name] = clazz.name

# Read thread configuration if available
if Workling.config.has_key?(:listeners)
if Workling.config[:listeners].has_key?(clazz.to_s)
Expand Down

0 comments on commit f7b9c0e

Please sign in to comment.