Class: Tina4::MessageLog
- Inherits:
-
Object
- Object
- Tina4::MessageLog
- Defined in:
- lib/tina4/dev_admin.rb
Overview
Thread-safe in-memory message log for dev dashboard
Defined Under Namespace
Classes: Entry
Instance Method Summary collapse
- #clear(category: nil) ⇒ Object
- #count ⇒ Object
- #get(category: nil) ⇒ Object
-
#initialize ⇒ MessageLog
constructor
A new instance of MessageLog.
- #log(category, level, message) ⇒ Object
Constructor Details
#initialize ⇒ MessageLog
Returns a new instance of MessageLog.
15 16 17 18 |
# File 'lib/tina4/dev_admin.rb', line 15 def initialize @entries = [] @mutex = Mutex.new end |
Instance Method Details
#clear(category: nil) ⇒ Object
40 41 42 43 44 45 46 47 48 |
# File 'lib/tina4/dev_admin.rb', line 40 def clear(category: nil) @mutex.synchronize do if category @entries.reject! { |e| e.category == category.to_s } else @entries.clear end end end |
#count ⇒ Object
50 51 52 53 54 55 56 57 |
# File 'lib/tina4/dev_admin.rb', line 50 def count @mutex.synchronize do counts = Hash.new(0) @entries.each { |e| counts[e.category] += 1 } counts["total"] = @entries.size counts end end |
#get(category: nil) ⇒ Object
33 34 35 36 37 38 |
# File 'lib/tina4/dev_admin.rb', line 33 def get(category: nil) @mutex.synchronize do list = category ? @entries.select { |e| e.category == category.to_s } : @entries.dup list.reverse.map { |e| { timestamp: e., category: e.category, level: e.level, message: e. } } end end |
#log(category, level, message) ⇒ Object
20 21 22 23 24 25 26 27 28 29 30 31 |
# File 'lib/tina4/dev_admin.rb', line 20 def log(category, level, ) @mutex.synchronize do @entries << Entry.new( timestamp: Time.now.utc.iso8601(3), category: category.to_s, level: level.to_s.upcase, message: .to_s ) # Keep last 500 entries @entries.shift if @entries.size > 500 end end |