Class Merb::Logger
In: merb-core/lib/merb-core/logger.rb
Parent: Extlib::Logger

Merb::Logger = Extlib::Logger

Methods

<<   close   flush   new   push   set_log   verbose   verbose!  

Constants

Levels = Mash.new({ :fatal => 7, :error => 6, :warn => 4, :info => 3, :debug => 0  

Notes

Ruby (standard) logger levels:
:fatal:An unhandleable error that results in a program crash
:error:A handleable error condition
:warn:A warning
:info:generic (useful) information about system operation
:debug:low-level information for developers

Attributes

auto_flush  [RW] 
buffer  [R] 
delimiter  [RW] 
init_args  [R] 
level  [RW] 
log  [R] 

Public Class methods

To initialize the logger you create a new object, proxies to set_log.

Parameters

*args:Arguments to create the log from. See set_logs for specifics.

[Source]

    # File merb-core/lib/merb-core/logger.rb, line 82
82:     def initialize(*args)
83:       set_log(*args)
84:     end

Public Instance methods

Appends a message to the log. The methods yield to an optional block and the output of this block will be appended to the message.

Parameters

string<String>:The message to be logged. Defaults to nil.

Returns

String:The resulting message added to the log file.

[Source]

     # File merb-core/lib/merb-core/logger.rb, line 141
141:     def <<(string = nil)
142:       message = ""
143:       message << delimiter
144:       message << string if string
145:       message << "\n" unless message[-1] == ?\n
146:       @buffer << message
147:       flush if @auto_flush
148: 
149:       message
150:     end

Close and remove the current log object.

[Source]

     # File merb-core/lib/merb-core/logger.rb, line 127
127:     def close
128:       flush
129:       @log.close if @log.respond_to?(:close) && !@log.tty?
130:       @log = nil
131:     end

Flush the entire buffer to the log object.

[Source]

     # File merb-core/lib/merb-core/logger.rb, line 119
119:     def flush
120:       return unless @buffer.size > 0
121:       @mutex.synchronize do
122:         @log.write(@buffer.slice!(0..-1).to_s)
123:       end
124:     end
push(string = nil)

Alias for #<<

Replaces an existing logger with a new one.

Parameters

log<IO, String>:Either an IO object or a name of a logfile.
log_level<~to_sym>:The log level from, e.g. :fatal or :info. Defaults to :error in the production environment and :debug otherwise.
delimiter<String>:Delimiter to use between message sections. Defaults to " ~ ".
auto_flush<Boolean>:Whether the log should automatically flush after new messages are added. Defaults to false.

[Source]

     # File merb-core/lib/merb-core/logger.rb, line 98
 98:     def set_log(stream = Merb::Config[:log_stream],
 99:       log_level = Merb::Config[:log_level],
100:       delimiter = Merb::Config[:log_delimiter],
101:       auto_flush = Merb::Config[:log_auto_flush])
102: 
103:       @buffer                   = []
104:       @delimiter                = delimiter
105:       @auto_flush               = auto_flush
106: 
107:       if Levels[log_level]
108:         @level                  = Levels[log_level]
109:       else
110:         @level                  = log_level
111:       end
112: 
113:       @log                      = stream
114:       @log.sync                 = true
115:       @mutex = (@@mutex[@log] ||= Mutex.new)
116:     end

:api: public

[Source]

    # File merb-core/lib/merb-core/logger.rb, line 10
10:   def verbose(message, level = :warn)
11:     send(level, message) if Merb::Config[:verbose]
12:   end

:api: public

[Source]

   # File merb-core/lib/merb-core/logger.rb, line 5
5:   def verbose!(message, level = :warn)
6:     send("#{level}!", message) if Merb::Config[:verbose]
7:   end

[Validate]