module Scriptster::Logger
This module contains the logging function and related configuration.
Public Class Methods
Log a string.
The message will be written to both stdout and the log file if configured.
@param [Symbol] msg_type Type of the message. @param [String] msg The contents of the log message. @param [Symbol] verbosity Desired verbosity level of this message.
# File lib/scriptster/logger.rb, line 116 def self.log(msg_type, msg, verbosity=:informative) # arguments sanity checks unless @@message_types.include? msg_type raise ArgumentError, "Unknown message type :#{msg_type}" end unless @@verbosity_levels.include?(verbosity) and verbosity != :quiet raise ArgumentError, "You can't use the :#{verbosity.to_s} verbosity level" end if @@verbosity_levels[verbosity] <= @@verbosity_levels[@@verbosity] ts = Time.now.strftime("%Y-%m-%d %H:%M:%S").style("timestamp") name = if @@name != nil && @@name.length > 0 @@name.style("name") else "" end msg.chomp! msg = Tco::parse msg, Tco::get_style("#{msg_type.to_s}-message") line = @@format % { timestamp: ts, name: name, type: @@message_types[msg_type].style(msg_type.to_s), message: msg } puts line STDOUT.flush if @@file # Strip colours from the message before writing to a file @@file.puts line.gsub(/\033\[[0-9]+(;[0-9]+){0,2}m/, "") end end end
A setter for the log file.
@param [String, StringIO, File] file A path or an IO object.
# File lib/scriptster/logger.rb, line 80 def self.set_file(file) @@file.close if @@file @@file = nil case when file.is_a?(String) then @@file = File.open file, "w" when file.is_a?(File) then @@file = file when file.is_a?(StringIO) then @@file = file else raise "Not a vailid file" end end
Specify the format of each line in the logs.
The template can reference the following keys:
* timestamp * name * type * message
@example
Logger::set_format "%{timestamp} %{name} %{type} %{message}"
@param [String] format The format template.
# File lib/scriptster/logger.rb, line 105 def self.set_format(format) @@format = format end
A setter for the script name.
@param [String] name Desired script name.
# File lib/scriptster/logger.rb, line 63 def self.set_name(name) @@name = name end
A setter for for logger verbosity.
@param [Symbol] level Desired verbosity level.
# File lib/scriptster/logger.rb, line 70 def self.set_verbosity(level) msg = "Message verbosity level not recognised (#{})." raise msg unless @@verbosity_levels.has_key? level.to_sym @@verbosity = level.to_sym end
Public Instance Methods
Instance method wrapper for when the module is included.
@see Logger.log
# File lib/scriptster/logger.rb, line 158 def log(msg_type, msg, verbosity=:informative) Logger::log msg_type, msg, verbosity end