Instantiate a new Logger object
# File lib/god/logger.rb, line 14 def initialize(io = $stdout) super(io) self.logs = {} @mutex = Mutex.new @capture = nil @spool = Time.now - 10 @templogio = StringIO.new @templog = SimpleLogger.new(@templogio) @templog.level = Logger::INFO end
Disable capturing of log and return what was captured since capturing was enabled with Logger#start_capture
Returns String
# File lib/god/logger.rb, line 100 def finish_capture @mutex.synchronize do cap = @capture.string if @capture @capture = nil cap end end
# File lib/god/logger.rb, line 26 def level=(lev) SysLogger.level = SimpleLogger::CONSTANT_TO_SYMBOL[lev] if Logger.syslog super(lev) end
Log a message
+watch+ is the String name of the Watch (may be nil if not Watch is applicable) +level+ is the log level [:debug|:info|:warn|:error|:fatal] +text+ is the String message
Returns nothing
# File lib/god/logger.rb, line 37 def log(watch, level, text) # initialize watch log if necessary self.logs[watch.name] ||= Timeline.new(God::LOG_BUFFER_SIZE_DEFAULT) if watch # push onto capture and timeline for the given watch if @capture || (watch && (Time.now - @spool < 2)) @mutex.synchronize do @templogio.truncate(0) @templogio.rewind @templog.send(level, text) message = @templogio.string.dup if @capture @capture.puts(message) else self.logs[watch.name] << [Time.now, message] end end end # send to regular logger self.send(level, text) # send to syslog SysLogger.log(level, text) if Logger.syslog end
Enable capturing of log
Returns nothing
# File lib/god/logger.rb, line 90 def start_capture @mutex.synchronize do @capture = StringIO.new end end
Get all log output for a given Watch since a certain Time.
+watch_name+ is the String name of the Watch +since+ is the Time since which to fetch log lines
Returns String
# File lib/god/logger.rb, line 70 def watch_log_since(watch_name, since) # initialize watch log if necessary self.logs[watch_name] ||= Timeline.new(God::LOG_BUFFER_SIZE_DEFAULT) # get and join lines since given time @mutex.synchronize do @spool = Time.now self.logs[watch_name].select do |x| x.first > since end.map do |x| x[1] end.join end end
Generated with the Darkfish Rdoc Generator 2.