lib/daemonizer.rb in daemonizer-0.4.14 vs lib/daemonizer.rb in daemonizer-0.4.15
- old
+ new
@@ -5,11 +5,11 @@
require 'logger'
require 'simple-statistics'
module Daemonizer
-
+
def self.root=(value)
@@root = value
end
def self.root
@@ -17,60 +17,78 @@
@@root
else
File.dirname(daemonfile)
end
end
-
+
+ def self.find_daemonfile(daemonfile_name)
+ previous = nil
+ current = File.expand_path(Dir.pwd)
+
+ until !File.directory?(current) || current == previous
+ filename = File.join(current, daemonfile_name)
+ return filename if File.file?(filename)
+ current, previous = File.expand_path("..", current), current
+ end
+ end
+
def self.daemonfile=(daemonfile_name)
- @@daemonfile = File.expand_path(daemonfile_name)
- @@daemonfile
+ @@daemonfile = find_daemonfile(daemonfile_name)
end
-
+
def self.daemonfile
if defined?(@@daemonfile)
@@daemonfile
else
"Demfile"
end
end
-
+
def self.logger_context=(str)
@@logger_context = str
end
-
+
def self.logger_context
@@logger_context
end
-
+
+ def self.log_level=(level)
+ @@log_level = level
+ end
+
+ def self.log_level
+ @@log_level ||= :info
+ end
+
def self.init_logger(name, log_file)
@@logger_file = File.open(log_file, File::WRONLY | File::APPEND)
@@logger_file.sync = true
@@logger = Logger.new(@@logger_file)
set_logger_common_options
end
-
+
def self.set_logger_common_options
- @@logger.sev_threshold = Logger::INFO
+ @@logger.sev_threshold = Logger::const_get(Daemonizer.log_level.to_s.upcase) || Logger::INFO
@@logger.formatter = Proc.new do |severity, datetime, progname, msg|
"%s %s -- %s -- %s\n" % [ datetime.strftime("%Y-%m-%d %H:%M:%S"), severity, Daemonizer.logger_context, msg ]
end
end
-
+
def self.reopen_log_file
true #do not need it in append-only mode
end
-
+
def self.flush_logger
@@logger_file.flush
end
-
+
def self.init_console_logger(name)
@@logger_file = STDOUT
@@logger = Logger.new(@@logger_file)
set_logger_common_options
end
-
+
def self.logger
if defined?(@@logger)
@@logger
else
nil
@@ -78,12 +96,12 @@
end
def self.[](pool)
find_pools(pool).first or nil
end
-
- def self.find_pools(pool_name = nil)
+
+ def self.find_pools(pool_name = nil)
pools = Dsl.evaluate(daemonfile)
if pool_name
if pool = pools[pool_name.to_sym]
[pool]
@@ -93,9 +111,9 @@
end
else
pools.values
end
end
-
+
end
require File.dirname(__FILE__) + '/../lib/daemonizer/autoload'