Class: Merb::Logger
Constant Summary collapse
- Levels =
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
{ :fatal => 7, :error => 6, :warn => 4, :info => 3, :debug => 0 }
Instance Attribute Summary collapse
-
#aio ⇒ Object
Returns the value of attribute aio.
-
#auto_flush ⇒ Object
Returns the value of attribute auto_flush.
-
#buffer ⇒ Object
readonly
Returns the value of attribute buffer.
-
#delimiter ⇒ Object
Returns the value of attribute delimiter.
-
#init_args ⇒ Object
readonly
Returns the value of attribute init_args.
-
#level ⇒ Object
Returns the value of attribute level.
-
#log ⇒ Object
readonly
Returns the value of attribute log.
Instance Method Summary collapse
-
#<<(string = nil) ⇒ Object
(also: #push)
Appends a message to the log.
-
#close ⇒ Object
Close and remove the current log object.
-
#flush ⇒ Object
Flush the entire buffer to the log object.
-
#initialize(*args) ⇒ Logger
constructor
To initialize the logger you create a new object, proxies to set_log.
-
#set_log(log, log_level = nil, delimiter = " ~ ", auto_flush = false) ⇒ Object
Replaces an existing logger with a new one.
Constructor Details
#initialize(*args) ⇒ Logger
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.
121 122 123 124 |
# File 'lib/merb-core/logger.rb', line 121 def initialize(*args) @init_args = args set_log(*args) end |
Instance Attribute Details
#aio ⇒ Object
Returns the value of attribute aio.
42 43 44 |
# File 'lib/merb-core/logger.rb', line 42 def aio @aio end |
#auto_flush ⇒ Object
Returns the value of attribute auto_flush.
45 46 47 |
# File 'lib/merb-core/logger.rb', line 45 def auto_flush @auto_flush end |
#buffer ⇒ Object (readonly)
Returns the value of attribute buffer.
46 47 48 |
# File 'lib/merb-core/logger.rb', line 46 def buffer @buffer end |
#delimiter ⇒ Object
Returns the value of attribute delimiter.
44 45 46 |
# File 'lib/merb-core/logger.rb', line 44 def delimiter @delimiter end |
#init_args ⇒ Object (readonly)
Returns the value of attribute init_args.
48 49 50 |
# File 'lib/merb-core/logger.rb', line 48 def init_args @init_args end |
#level ⇒ Object
Returns the value of attribute level.
43 44 45 |
# File 'lib/merb-core/logger.rb', line 43 def level @level end |
#log ⇒ Object (readonly)
Returns the value of attribute log.
47 48 49 |
# File 'lib/merb-core/logger.rb', line 47 def log @log end |
Instance Method Details
#<<(string = nil) ⇒ Object Also known as: push
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.
176 177 178 179 180 181 182 183 184 185 |
# File 'lib/merb-core/logger.rb', line 176 def <<(string = nil) = "" << delimiter << string if string << "\n" unless [-1] == ?\n @buffer << flush if @auto_flush end |
#close ⇒ Object
Close and remove the current log object.
162 163 164 165 166 |
# File 'lib/merb-core/logger.rb', line 162 def close flush @log.close if @log.respond_to?(:close) @log = nil end |
#flush ⇒ Object
Flush the entire buffer to the log object.
156 157 158 159 |
# File 'lib/merb-core/logger.rb', line 156 def flush return unless @buffer.size > 0 @log.write_method(@buffer.slice!(0..-1).to_s) end |
#set_log(log, log_level = nil, delimiter = " ~ ", auto_flush = false) ⇒ Object
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.
138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 |
# File 'lib/merb-core/logger.rb', line 138 def set_log(log, log_level = nil, delimiter = " ~ ", auto_flush = false) if log_level && Levels[log_level.to_sym] @level = Levels[log_level.to_sym] elsif Merb.environment == "production" @level = Levels[:warn] else @level = Levels[:debug] end @buffer = [] @delimiter = delimiter @auto_flush = auto_flush initialize_log(log) Merb.logger = self end |