Class: Merb::Logger
- Defined in:
- lib/merb-core/logger.rb,
lib/merb-core/logger.rb
Overview
Merb::Logger = Extlib::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 }
- @@mutex =
{}
Instance Attribute Summary collapse
-
#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(stream = Merb::Config[:log_stream], log_level = Merb::Config[:log_level], delimiter = Merb::Config[:log_delimiter], auto_flush = Merb::Config[:log_auto_flush]) ⇒ Object
Replaces an existing logger with a new one.
- #verbose(message, level = :warn) ⇒ Object
- #verbose!(message, level = :warn) ⇒ Object
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.
103 104 105 |
# File 'lib/merb-core/logger.rb', line 103 def initialize(*args) set_log(*args) end |
Instance Attribute Details
#auto_flush ⇒ Object
Returns the value of attribute auto_flush.
52 53 54 |
# File 'lib/merb-core/logger.rb', line 52 def auto_flush @auto_flush end |
#buffer ⇒ Object (readonly)
Returns the value of attribute buffer.
53 54 55 |
# File 'lib/merb-core/logger.rb', line 53 def buffer @buffer end |
#delimiter ⇒ Object
Returns the value of attribute delimiter.
51 52 53 |
# File 'lib/merb-core/logger.rb', line 51 def delimiter @delimiter end |
#init_args ⇒ Object (readonly)
Returns the value of attribute init_args.
55 56 57 |
# File 'lib/merb-core/logger.rb', line 55 def init_args @init_args end |
#level ⇒ Object
Returns the value of attribute level.
50 51 52 |
# File 'lib/merb-core/logger.rb', line 50 def level @level end |
#log ⇒ Object (readonly)
Returns the value of attribute log.
54 55 56 |
# File 'lib/merb-core/logger.rb', line 54 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.
161 162 163 164 165 166 167 168 169 170 |
# File 'lib/merb-core/logger.rb', line 161 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.
147 148 149 150 151 |
# File 'lib/merb-core/logger.rb', line 147 def close flush @log.close if @log.respond_to?(:close) && !@log.tty? @log = nil end |
#flush ⇒ Object
Flush the entire buffer to the log object.
139 140 141 142 143 144 |
# File 'lib/merb-core/logger.rb', line 139 def flush return unless @buffer.size > 0 @mutex.synchronize do @log.write(@buffer.slice!(0..-1).to_s) end end |
#set_log(stream = Merb::Config[:log_stream], log_level = Merb::Config[:log_level], delimiter = Merb::Config[:log_delimiter], auto_flush = Merb::Config[:log_auto_flush]) ⇒ 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.
119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 |
# File 'lib/merb-core/logger.rb', line 119 def set_log(stream = Merb::Config[:log_stream], log_level = Merb::Config[:log_level], delimiter = Merb::Config[:log_delimiter], auto_flush = Merb::Config[:log_auto_flush]) @buffer = [] @delimiter = delimiter @auto_flush = auto_flush if Levels[log_level] @level = Levels[log_level] else @level = log_level end @log = stream @mutex = (@@mutex[@log] ||= Mutex.new) end |