Class: JsDuck::Logger
- Inherits:
-
Object
- Object
- JsDuck::Logger
- Includes:
- Util::Singleton
- Defined in:
- lib/jsduck/logger.rb
Overview
Central logging of JsDuck
Instance Attribute Summary collapse
-
#colors ⇒ Object
Set true to force colored output.
-
#verbose ⇒ Object
Set to true to enable verbose logging.
Instance Method Summary collapse
-
#configure(opts) ⇒ Object
Configures the logger with command line options.
-
#configure_defaults ⇒ Object
Configures warnings to default settings.
-
#doc_warnings ⇒ Object
get documentation for all warnings.
-
#fatal(msg) ⇒ Object
Prints fatal error message with backtrace.
-
#fatal_backtrace(msg, error) ⇒ Object
Prints fatal error message with backtrace.
-
#initialize ⇒ Logger
constructor
A new instance of Logger.
-
#log(msg, filename = nil) ⇒ Object
Prints log message with optional filename appended.
-
#set_warning(type, enabled, pattern = nil, params = []) ⇒ Object
Enables or disables a particular warning or all warnings when type == :all.
-
#warn(type, msg, file = {}, args = []) ⇒ Object
Prints warning message.
-
#warnings_logged? ⇒ Boolean
True when at least one warning was logged.
Methods included from Util::Singleton
Constructor Details
#initialize ⇒ Logger
Returns a new instance of Logger.
19 20 21 22 23 24 25 26 |
# File 'lib/jsduck/logger.rb', line 19 def initialize @verbose = false @colors = nil @warnings = Warning::Registry.new @shown_warnings = {} end |
Instance Attribute Details
#colors ⇒ Object
Set true to force colored output. Set false to force no colors.
17 18 19 |
# File 'lib/jsduck/logger.rb', line 17 def colors @colors end |
#verbose ⇒ Object
Set to true to enable verbose logging
13 14 15 |
# File 'lib/jsduck/logger.rb', line 13 def verbose @verbose end |
Instance Method Details
#configure(opts) ⇒ Object
Configures the logger with command line options.
42 43 44 45 46 47 48 49 50 51 52 53 54 |
# File 'lib/jsduck/logger.rb', line 42 def configure(opts) self.verbose = true if opts.verbose self.colors = opts.color unless opts.color.nil? begin opts.warnings.each do |w| set_warning(w[:type], w[:enabled], w[:path], w[:params]) end rescue Warning::WarnException => e warn(nil, e.) end end |
#configure_defaults ⇒ Object
Configures warnings to default settings.
NB! Needs to be called before retrieving the documentation with #doc_warnings (otherwise the +/- signs will be wrong).
32 33 34 35 36 37 38 39 |
# File 'lib/jsduck/logger.rb', line 32 def configure_defaults # Enable all warnings except some. set_warning(:all, true) set_warning(:link_auto, false) set_warning(:param_count, false) set_warning(:fires, false) set_warning(:nodoc, false) end |
#doc_warnings ⇒ Object
get documentation for all warnings
75 76 77 |
# File 'lib/jsduck/logger.rb', line 75 def doc_warnings @warnings.doc end |
#fatal(msg) ⇒ Object
Prints fatal error message with backtrace. The error param should be $! from resque block.
109 110 111 |
# File 'lib/jsduck/logger.rb', line 109 def fatal(msg) $stderr.puts paint(:red, "Error: ") + msg end |
#fatal_backtrace(msg, error) ⇒ Object
Prints fatal error message with backtrace. The error param should be $! from resque block.
115 116 117 118 119 120 |
# File 'lib/jsduck/logger.rb', line 115 def fatal_backtrace(msg, error) $stderr.puts paint(:red, "Error: ") + "#{msg}: #{error}" $stderr.puts $stderr.puts "Here's a full backtrace:" $stderr.puts error.backtrace end |
#log(msg, filename = nil) ⇒ Object
Prints log message with optional filename appended
57 58 59 60 61 |
# File 'lib/jsduck/logger.rb', line 57 def log(msg, filename=nil) if @verbose $stderr.puts paint(:green, msg) + " " + format(filename) + " ..." end end |
#set_warning(type, enabled, pattern = nil, params = []) ⇒ Object
Enables or disables a particular warning or all warnings when type == :all. Additionally a filename pattern can be specified.
66 67 68 69 70 71 72 |
# File 'lib/jsduck/logger.rb', line 66 def set_warning(type, enabled, pattern=nil, params=[]) begin @warnings.set(type, enabled, pattern, params) rescue Warning::WarnException => e warn(nil, e.) end end |
#warn(type, msg, file = {}, args = []) ⇒ Object
Prints warning message.
The type must be one of predefined warning types which can be toggled on/off with command-line options, or it can be nil, in which case the warning is always shown.
Ignores duplicate warnings - only prints the first one. Works best when –processes=0, but it reduces the amount of warnings greatly also when run multiple processes.
The file parameter must be a hash like:
{:filename => "foo.js", :linenr => 17}
When supplied, it the filename and line number will be appended to the message, to convey where the warning was triggered.
The optional args parameter must be an array of arguments and only applies to some warning types like :nodoc.
99 100 101 102 103 104 105 |
# File 'lib/jsduck/logger.rb', line 99 def warn(type, msg, file={}, args=[]) if warning_enabled?(type, file[:filename], args) print_warning(msg, file[:filename], file[:linenr]) end return false end |
#warnings_logged? ⇒ Boolean
True when at least one warning was logged.
123 124 125 |
# File 'lib/jsduck/logger.rb', line 123 def warnings_logged? @shown_warnings.length > 0 end |