Class: Log::Entry
- Inherits:
-
Object
- Object
- Log::Entry
- Defined in:
- lib/log/entry.rb
Constant Summary collapse
- Severity =
Hash.new{|h,k|k}.merge({ :debug => 1, :info => 2, :warn => 4, :error => 8, :fail => 16, })
- InvSeverity =
Severity.invert
Class Attribute Summary collapse
-
.time_format ⇒ Object
Returns the value of attribute time_format.
Instance Attribute Summary collapse
-
#data ⇒ Object
readonly
Returns the value of attribute data.
-
#flags ⇒ Object
readonly
Returns the value of attribute flags.
-
#severity ⇒ Object
readonly
Returns the value of attribute severity.
-
#text ⇒ Object
readonly
Returns the value of attribute text.
-
#time ⇒ Object
readonly
Returns the value of attribute time.
Class Method Summary collapse
- .deserialize(line) ⇒ Object
- .format(entity, value, *args) ⇒ Object
- .format_flags(entry, flags) ⇒ Object
- .format_severity(entry) ⇒ Object
- .format_text(entry) ⇒ Object
- .format_time(entry, time, format = nil) ⇒ Object
- .formatter_for(entity, &formatter) ⇒ Object
Instance Method Summary collapse
- #[](key) ⇒ Object
- #debug? ⇒ Boolean
- #error? ⇒ Boolean
- #fail? ⇒ Boolean
- #info? ⇒ Boolean
-
#initialize(text, severity = :info, data = nil, *flags) ⇒ Entry
constructor
A new instance of Entry.
- #inspect ⇒ Object
- #serialize ⇒ Object
- #to_s(format = nil) ⇒ Object
- #warn? ⇒ Boolean
Constructor Details
#initialize(text, severity = :info, data = nil, *flags) ⇒ Entry
Returns a new instance of Entry.
85 86 87 88 89 90 91 92 93 |
# File 'lib/log/entry.rb', line 85 def initialize(text, severity=:info, data=nil, *flags) @time = flags.first.kind_of?(Time) ? flags.shift : Time.now @severity = severity @text = text @data = data @flags = flags.last.kind_of?(Hash) ? flags.pop : {} @flags.each_key { |k,v| @flags[k.to_s] = @flags.delete(k) } flags.each { |flag| @flags[flag.to_s] = true } end |
Class Attribute Details
.time_format ⇒ Object
Returns the value of attribute time_format.
27 28 29 |
# File 'lib/log/entry.rb', line 27 def time_format @time_format end |
Instance Attribute Details
#data ⇒ Object (readonly)
Returns the value of attribute data.
84 85 86 |
# File 'lib/log/entry.rb', line 84 def data @data end |
#flags ⇒ Object (readonly)
Returns the value of attribute flags.
83 84 85 |
# File 'lib/log/entry.rb', line 83 def flags @flags end |
#severity ⇒ Object (readonly)
Returns the value of attribute severity.
81 82 83 |
# File 'lib/log/entry.rb', line 81 def severity @severity end |
#text ⇒ Object (readonly)
Returns the value of attribute text.
82 83 84 |
# File 'lib/log/entry.rb', line 82 def text @text end |
#time ⇒ Object (readonly)
Returns the value of attribute time.
80 81 82 |
# File 'lib/log/entry.rb', line 80 def time @time end |
Class Method Details
.deserialize(line) ⇒ Object
29 30 31 32 33 34 35 36 37 |
# File 'lib/log/entry.rb', line 29 def deserialize(line) time, severity, text, flagstr, data = line.chomp(RecordTerminator).split(RecordSeparator) flags = {} flagstr.split(UnitSeparator).each_cons(2) { |key, value| flagstr[key] = value } severity = Integer(severity) rescue severity new(text, InvSeverity[severity], Marshal.load(Log.unescape(data)), Time.at(time.to_i), flags) end |
.format(entity, value, *args) ⇒ Object
43 44 45 |
# File 'lib/log/entry.rb', line 43 def format(entity, value, *args) @formatter[entity].call(value, *args) end |
.format_flags(entry, flags) ⇒ Object
55 56 57 |
# File 'lib/log/entry.rb', line 55 def format_flags(entry, flags) entry.flags.map{ |k,v| "#{k}: #{v}"}.join(", ") end |
.format_severity(entry) ⇒ Object
51 52 53 |
# File 'lib/log/entry.rb', line 51 def format_severity(entry) entry.severity.to_s end |
.format_text(entry) ⇒ Object
59 60 61 |
# File 'lib/log/entry.rb', line 59 def format_text(entry) entry.text.chomp.gsub(/[\r\n]+/, '; ').gsub(/[\x00-\x1f\x7f]/, '.') end |
.format_time(entry, time, format = nil) ⇒ Object
47 48 49 |
# File 'lib/log/entry.rb', line 47 def format_time(entry, time, format=nil) entry.time.strftime(format || @time_format) end |
.formatter_for(entity, &formatter) ⇒ Object
39 40 41 |
# File 'lib/log/entry.rb', line 39 def formatter_for(entity, &formatter) @formatter[entity] = formatter end |
Instance Method Details
#[](key) ⇒ Object
95 96 97 |
# File 'lib/log/entry.rb', line 95 def [](key) @flags[key] end |
#debug? ⇒ Boolean
99 100 101 |
# File 'lib/log/entry.rb', line 99 def debug? @severity == Severity[:debug] end |
#error? ⇒ Boolean
111 112 113 |
# File 'lib/log/entry.rb', line 111 def error? @severity == Severity[:error] end |
#fail? ⇒ Boolean
115 116 117 |
# File 'lib/log/entry.rb', line 115 def fail? @severity == Severity[:fail] end |
#info? ⇒ Boolean
103 104 105 |
# File 'lib/log/entry.rb', line 103 def info? @severity == Severity[:info] end |
#inspect ⇒ Object
141 142 143 144 145 146 147 148 149 150 |
# File 'lib/log/entry.rb', line 141 def inspect "#<%s %s %s %s flags=%s data=%s>" % [ self.class, @time.strftime("%FT%T"), @severity, @text.inspect, @flags.inspect, @data.inspect ] end |
#serialize ⇒ Object
119 120 121 122 123 124 125 126 127 |
# File 'lib/log/entry.rb', line 119 def serialize Serialized % [ @time, Severity[@severity], Log.escape(@text), @flags.map.join(UnitSeparator), Log.escape(Marshal.dump(@data)) ] end |
#to_s(format = nil) ⇒ Object
129 130 131 132 133 134 135 136 137 138 139 |
# File 'lib/log/entry.rb', line 129 def to_s(format=nil) format ||= "%{time:%FT%T} [%{severity}]: %{text}" format.gsub(/%(%|\{[^}]+\})/) { |match| if match == "%%" then "%" else entity, *args = match[2..-2].split(/:/) Entry.format(entity, self, *args) end } end |
#warn? ⇒ Boolean
107 108 109 |
# File 'lib/log/entry.rb', line 107 def warn? @severity == Severity[:warn] end |