Module: Scriptster::Logger
- Included in:
- ShellCmd
- Defined in:
- lib/scriptster/logger.rb
Overview
This module contains the logging function and related configuration.
Constant Summary collapse
- @@name =
The name of the script.
nil
- @@file =
The IO object to log to.
nil
- @@timestamps =
Show timestamps flag.
false
- @@message_types =
Supported message types.
{ :info => "info", :warn => "WARN", :err => "ERR!", :debug => "dbg?" }
- @@verbosity =
The default verobosity level.
:verbose
- @@verbosity_levels =
Supported verbosity levels.
{ :quiet => 0, :essential => 1, :important => 2, :informative => 3, :verbose => 4 }
- @@format =
"%{timestamp} %{name} %{type} %{message}"
Class Method Summary collapse
-
.log(msg_type, msg, verbosity = :informative) ⇒ Object
Log a string.
-
.set_file(file) ⇒ Object
A setter for the log file.
-
.set_format(format) ⇒ Object
Specify the format of each line in the logs.
-
.set_name(name) ⇒ Object
A setter for the script name.
-
.set_verbosity(level) ⇒ Object
A setter for for logger verbosity.
Instance Method Summary collapse
-
#log(msg_type, msg, verbosity = :informative) ⇒ Object
Instance method wrapper for when the module is included.
Class Method Details
.log(msg_type, msg, verbosity = :informative) ⇒ Object
Log a string.
The message will be written to both stdout and the log file if configured.
116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 |
# File 'lib/scriptster/logger.rb', line 116 def self.log(msg_type, msg, verbosity=:informative) # arguments sanity checks unless .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: [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 |
.set_file(file) ⇒ Object
A setter for the log file.
80 81 82 83 84 85 86 87 88 89 90 91 |
# 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 |
.set_format(format) ⇒ Object
Specify the format of each line in the logs.
The template can reference the following keys:
*
* name
* type
*
105 106 107 |
# File 'lib/scriptster/logger.rb', line 105 def self.set_format(format) @@format = format end |
.set_name(name) ⇒ Object
A setter for the script name.
63 64 65 |
# File 'lib/scriptster/logger.rb', line 63 def self.set_name(name) @@name = name end |
.set_verbosity(level) ⇒ Object
A setter for for logger verbosity.
70 71 72 73 74 75 |
# 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 |
Instance Method Details
#log(msg_type, msg, verbosity = :informative) ⇒ Object
Instance method wrapper for when the module is included.
158 159 160 |
# File 'lib/scriptster/logger.rb', line 158 def log(msg_type, msg, verbosity=:informative) Logger::log msg_type, msg, verbosity end |