Class: Pancake::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
Hashie::Mash.new({ :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 = Pancake.configuration.log_stream, log_level = Pancake.configuration.log_level, delimiter = Pancake.configuration.log_delimiter, auto_flush = Pancake.configuration.log_auto_flush) ⇒ 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.
68 69 70 |
# File 'lib/pancake/logger.rb', line 68 def initialize(*args) set_log(*args) end |
Instance Attribute Details
#auto_flush ⇒ Object
Returns the value of attribute auto_flush.
40 41 42 |
# File 'lib/pancake/logger.rb', line 40 def auto_flush @auto_flush end |
#buffer ⇒ Object (readonly)
Returns the value of attribute buffer.
41 42 43 |
# File 'lib/pancake/logger.rb', line 41 def buffer @buffer end |
#delimiter ⇒ Object
Returns the value of attribute delimiter.
39 40 41 |
# File 'lib/pancake/logger.rb', line 39 def delimiter @delimiter end |
#init_args ⇒ Object (readonly)
Returns the value of attribute init_args.
43 44 45 |
# File 'lib/pancake/logger.rb', line 43 def init_args @init_args end |
#level ⇒ Object
Returns the value of attribute level.
38 39 40 |
# File 'lib/pancake/logger.rb', line 38 def level @level end |
#log ⇒ Object (readonly)
Returns the value of attribute log.
42 43 44 |
# File 'lib/pancake/logger.rb', line 42 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.
127 128 129 130 131 132 133 134 135 136 |
# File 'lib/pancake/logger.rb', line 127 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.
113 114 115 116 117 |
# File 'lib/pancake/logger.rb', line 113 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.
105 106 107 108 109 110 |
# File 'lib/pancake/logger.rb', line 105 def flush return unless @buffer.size > 0 @mutex.synchronize do @log.write(@buffer.slice!(0..-1).join('')) end end |
#set_log(stream = Pancake.configuration.log_stream, log_level = Pancake.configuration.log_level, delimiter = Pancake.configuration.log_delimiter, auto_flush = Pancake.configuration.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.
84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 |
# File 'lib/pancake/logger.rb', line 84 def set_log(stream = Pancake.configuration.log_stream, log_level = Pancake.configuration.log_level, delimiter = Pancake.configuration.log_delimiter, auto_flush = Pancake.configuration.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 @log.sync = true @mutex = (@@mutex[@log] ||= Mutex.new) end |