Class: Ramaze::Informer
- Includes:
- Logging
- Defined in:
- lib/ramaze/log/informer.rb
Overview
A minimal logger for Ramaze, supports files, CLI, colors and some customization.
Constant Summary collapse
- COLORS =
Which tag should be in what color
{ :dev => :blue, :debug => :yellow, :info => :green, :warn => :red, :error => :red, }
Instance Attribute Summary collapse
-
#colorize ⇒ Object
Returns the value of attribute colorize.
-
#log_levels ⇒ Object
Returns the value of attribute log_levels.
-
#out ⇒ Object
Returns the value of attribute out.
Instance Method Summary collapse
-
#closed? ⇒ Boolean
is @out closed?.
-
#initialize(out = $stdout, log_levels = [:debug, :error, :info, :warn]) ⇒ Informer
constructor
Create a new instance of Informer.
-
#log(tag, *messages) ⇒ Object
Integration to Logging.
-
#log_interpolate(prefix, text, time = timestamp) ⇒ Object
Takes the prefix (tag), text and timestamp and applies it to the :format trait.
-
#shutdown ⇒ Object
Close the file we log to if it isn’t closed already.
-
#timestamp ⇒ Object
This uses Global.inform_timestamp or a date in the format of %Y-%m-%d %H:%M:%S # => “2007-01-19 21:09:32”.
Methods included from Logging
#debug, #debug?, #dev, #error, #info, #tag_log, #warn
Constructor Details
#initialize(out = $stdout, log_levels = [:debug, :error, :info, :warn]) ⇒ Informer
Create a new instance of Informer. You can spcify
Examples:
Informer.new #=> logs to stdout with all levels being
shown.
Informer.new($stderr) #=> same, but to stderr
Informer.new("foo.log") #=> same, but logs to the file foo.log
(or creates it if it doesn't exist yet)
Informer.new($stdout, [:info]) #=> show only #info messages to stdout.
43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 |
# File 'lib/ramaze/log/informer.rb', line 43 def initialize(out = $stdout, log_levels = [:debug, :error, :info, :warn]) @colorize = false @out = case out when STDOUT, :stdout, 'stdout' $stdout when STDERR, :stderr, 'stderr' $stderr when IO out else if out.respond_to?(:puts) out else File.open(out.to_s, 'ab+') end end if @out.respond_to?(:tty?) and class_trait[:colorize] @colorize = @out.tty? end @log_levels = log_levels end |
Instance Attribute Details
#colorize ⇒ Object
Returns the value of attribute colorize.
12 13 14 |
# File 'lib/ramaze/log/informer.rb', line 12 def colorize @colorize end |
#log_levels ⇒ Object
Returns the value of attribute log_levels.
12 13 14 |
# File 'lib/ramaze/log/informer.rb', line 12 def log_levels @log_levels end |
#out ⇒ Object
Returns the value of attribute out.
12 13 14 |
# File 'lib/ramaze/log/informer.rb', line 12 def out @out end |
Instance Method Details
#closed? ⇒ Boolean
is @out closed?
121 122 123 |
# File 'lib/ramaze/log/informer.rb', line 121 def closed? @out.respond_to?(:closed?) and @out.closed? end |
#log(tag, *messages) ⇒ Object
Integration to Logging.
80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 |
# File 'lib/ramaze/log/informer.rb', line 80 def log tag, * return if closed? || !@log_levels.include?(tag) .flatten! prefix = tag.to_s.upcase.ljust(5) if @colorize color = COLORS[tag] ||= :white prefix.replace prefix.send(color) end .each do || @out.puts(log_interpolate(prefix, )) end @out.flush if @out.respond_to?(:flush) end |
#log_interpolate(prefix, text, time = timestamp) ⇒ Object
Takes the prefix (tag), text and timestamp and applies it to the :format trait.
101 102 103 104 105 106 107 108 |
# File 'lib/ramaze/log/informer.rb', line 101 def log_interpolate prefix, text, time = = class_trait[:format].dup vars = { '%time' => time, '%prefix' => prefix, '%text' => text } vars.each{|from, to| .gsub!(from, to) } end |
#shutdown ⇒ Object
Close the file we log to if it isn’t closed already.
71 72 73 74 75 76 |
# File 'lib/ramaze/log/informer.rb', line 71 def shutdown if @out.respond_to?(:close) Log.debug("close, #{@out.inspect}") @out.close end end |
#timestamp ⇒ Object
This uses Global.inform_timestamp or a date in the format of
%Y-%m-%d %H:%M:%S
# => "2007-01-19 21:09:32"
114 115 116 117 |
# File 'lib/ramaze/log/informer.rb', line 114 def mask = class_trait[:timestamp] Time.now.strftime(mask || "%Y-%m-%d %H:%M:%S") end |