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
95 96 97 98 99 100 101 |
# File 'lib/god/logger.rb', line 95 def finish_capture @mutex.synchronize do cap = @capture.string if @capture @capture = nil cap end end |
#level=(lev) ⇒ Object
25 26 27 28 |
# File 'lib/god/logger.rb', line 25 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
36 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 |
# File 'lib/god/logger.rb', line 36 def log(watch, level, text) # initialize watch log if necessary 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 logs[watch.name] << [Time.now, ] end end end # send to regular logger send(level, text) # send to syslog SysLogger.log(level, text) if Logger.syslog end |
#start_capture ⇒ Object
Enable capturing of log
Returns nothing
85 86 87 88 89 |
# File 'lib/god/logger.rb', line 85 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
69 70 71 72 73 74 75 76 77 78 |
# File 'lib/god/logger.rb', line 69 def watch_log_since(watch_name, since) # initialize watch log if necessary logs[watch_name] ||= Timeline.new(God::LOG_BUFFER_SIZE_DEFAULT) # get and join lines since given time @mutex.synchronize do @spool = Time.now logs[watch_name].select { |x| x.first > since }.map { |x| x[1] }.join end end |