class Dynamosaurus::Logger
Constants
- Levels
Attributes
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.
# File lib/dynamosaurus/logger.rb, line 48 def initialize(*args) @init_args = args set_log(*args) self.auto_flush = true Dynamosaurus.logger = self 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.
# File lib/dynamosaurus/logger.rb, line 101 def <<(string = nil) message = "" message << delimiter message << string if string message << "\n" unless message[-1] == ?\n @buffer << message flush if @auto_flush message end
Close and remove the current log object.
# File lib/dynamosaurus/logger.rb, line 87 def close flush @log.close if @log.respond_to?(:close) && !@log.tty? @log = nil end
Flush the entire buffer to the log object.
# File lib/dynamosaurus/logger.rb, line 81 def flush return unless @buffer.size > 0 @log.write(@buffer.slice!(0..-1).join) end
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.
# File lib/dynamosaurus/logger.rb, line 67 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] else @level = Levels[:debug] end @buffer = [] @delimiter = delimiter @auto_flush = auto_flush initialize_log(log) end
Private Instance Methods
Readies a log for writing.
Parameters¶ ↑
- log<IO, String>
-
Either an IO object or a name of a logfile.
# File lib/dynamosaurus/logger.rb, line 26 def initialize_log(log) close if @log # be sure that we don't leave open files laying around. if log.respond_to?(:write) @log = log elsif File.exist?(log) @log = open(log, (File::WRONLY | File::APPEND)) @log.sync = true else FileUtils.mkdir_p(File.dirname(log)) unless File.directory?(File.dirname(log)) @log = open(log, (File::WRONLY | File::APPEND | File::CREAT)) @log.sync = true @log.write("#{Time.now.httpdate} #{delimiter} info #{delimiter} Logfile created\n") end end