Class: God::Logger
- Inherits:
-
SimpleLogger
- Object
- SimpleLogger
- God::Logger
- Defined in:
- lib/god/logger.rb
Constant Summary
Constants inherited from SimpleLogger
SimpleLogger::CONSTANT_TO_SYMBOL, SimpleLogger::DEBUG, SimpleLogger::ERROR, SimpleLogger::FATAL, SimpleLogger::INFO, SimpleLogger::SEV_LABEL, SimpleLogger::WARN
Class Attribute Summary collapse
-
.syslog ⇒ Object
Returns the value of attribute syslog.
Instance Attribute Summary collapse
-
#logs ⇒ Object
Returns the value of attribute logs.
Attributes inherited from SimpleLogger
Instance Method Summary collapse
-
#finish_capture ⇒ Object
Disable capturing of log and return what was captured since capturing was enabled with Logger#start_capture.
-
#initialize(io = $stdout) ⇒ Logger
constructor
Instantiate a new Logger object.
- #level=(lev) ⇒ Object
-
#log(watch, level, text) ⇒ Object
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. -
#start_capture ⇒ Object
Enable capturing of log.
-
#watch_log_since(watch_name, since) ⇒ Object
Get all log output for a given Watch since a certain Time.
Methods inherited from SimpleLogger
#debug, #error, #fatal, #info, #output, #warn
Constructor Details
#initialize(io = $stdout) ⇒ Logger
Instantiate a new Logger object
14 15 16 17 18 19 20 21 22 23 |
# 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 |
Class Attribute Details
.syslog ⇒ Object
Returns the value of attribute syslog.
8 9 10 |
# File 'lib/god/logger.rb', line 8 def syslog @syslog end |
Instance Attribute Details
#logs ⇒ Object
Returns the value of attribute logs.
5 6 7 |
# File 'lib/god/logger.rb', line 5 def logs @logs end |
Instance Method Details
#finish_capture ⇒ Object
Disable capturing of log and return what was captured since capturing was enabled with Logger#start_capture
Returns String
100 101 102 103 104 105 106 |
# File 'lib/god/logger.rb', line 100 def finish_capture @mutex.synchronize do cap = @capture.string if @capture @capture = nil cap end end |
#level=(lev) ⇒ Object
26 27 28 29 |
# File 'lib/god/logger.rb', line 26 def level=(lev) SysLogger.level = SimpleLogger::CONSTANT_TO_SYMBOL[lev] if Logger.syslog super(lev) end |
#log(watch, level, text) ⇒ Object
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
37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 |
# 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) = @templogio.string.dup if @capture @capture.puts() else self.logs[watch.name] << [Time.now, ] end end end # send to regular logger self.send(level, text) # send to syslog SysLogger.log(level, text) if Logger.syslog end |
#start_capture ⇒ Object
Enable capturing of log
Returns nothing
90 91 92 93 94 |
# File 'lib/god/logger.rb', line 90 def start_capture @mutex.synchronize do @capture = StringIO.new end end |
#watch_log_since(watch_name, since) ⇒ Object
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
70 71 72 73 74 75 76 77 78 79 80 81 82 83 |
# 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 |