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
-
#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.
93 94 95 96 |
# File 'lib/merb-core/logger.rb', line 93 def initialize(*args) @init_args = args set_log(*args) end |
Instance Attribute Details
#auto_flush ⇒ Object
Returns the value of attribute auto_flush.
44 45 46 |
# File 'lib/merb-core/logger.rb', line 44 def auto_flush @auto_flush end |
#buffer ⇒ Object (readonly)
Returns the value of attribute buffer.
45 46 47 |
# File 'lib/merb-core/logger.rb', line 45 def buffer @buffer end |
#delimiter ⇒ Object
Returns the value of attribute delimiter.
43 44 45 |
# File 'lib/merb-core/logger.rb', line 43 def delimiter @delimiter end |
#init_args ⇒ Object (readonly)
Returns the value of attribute init_args.
47 48 49 |
# File 'lib/merb-core/logger.rb', line 47 def init_args @init_args end |
#level ⇒ Object
Returns the value of attribute level.
42 43 44 |
# File 'lib/merb-core/logger.rb', line 42 def level @level end |
#log ⇒ Object (readonly)
Returns the value of attribute log.
46 47 48 |
# File 'lib/merb-core/logger.rb', line 46 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
The message to be logged. Defaults to nil.
Returns
- String
The resulting message added to the log file.
148 149 150 151 152 153 154 155 156 157 |
# File 'lib/merb-core/logger.rb', line 148 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.
134 135 136 137 138 |
# File 'lib/merb-core/logger.rb', line 134 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.
128 129 130 131 |
# File 'lib/merb-core/logger.rb', line 128 def flush return unless @buffer.size > 0 @log.write(@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
Delimiter to use between message sections. Defaults to " ~ ".
- auto_flush
Whether the log should automatically flush after new messages are added. Defaults to false.
110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 |
# File 'lib/merb-core/logger.rb', line 110 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 |