Class: Nanoc::CLI::Logger

Inherits:
Object
  • Object
show all
Includes:
Singleton
Defined in:
lib/nanoc/cli/logger.rb

Overview

Nanoc::CLI::Logger is a singleton class responsible for generating feedback in the terminal.

Constant Summary

ACTION_COLORS =

Maps actions (:create, :update, :identical, :skip and :delete) onto their ANSI color codes.

{
  create: "\e[32m", # green
  update: "\e[33m", # yellow
  identical: '',    # (nothing)
  skip: '',         # (nothing)
  delete: "\e[31m"  # red
}

Instance Attribute Summary (collapse)

Instance Method Summary (collapse)

Constructor Details

- (Logger) initialize

Returns a new instance of Logger



28
29
30
# File 'lib/nanoc/cli/logger.rb', line 28

def initialize
  @level = :high
end

Instance Attribute Details

- (Symbol) level

Returns the log level, which can be :high, :low or :off (which will log all messages, only high-priority messages, or no messages at all, respectively).

Returns:

  • (Symbol)

    The log level



26
27
28
# File 'lib/nanoc/cli/logger.rb', line 26

def level
  @level
end

Instance Method Details

- (void) file(level, action, name, duration = nil)

This method returns an undefined value.

Logs a file-related action.

Parameters:

  • level (:high, :low)

    The importance of this action

  • action (:create, :update, :identical, :skip, :delete)

    The kind of file action

  • name (String)

    The name of the file the action was performed on



41
42
43
44
45
46
47
48
49
50
# File 'lib/nanoc/cli/logger.rb', line 41

def file(level, action, name, duration = nil)
  log(
    level,
    format('%s%12s%s  %s%s',
      ACTION_COLORS[action.to_sym],
      action,
      "\e[0m",
      duration.nil? ? '' : format('[%2.2fs]  ', duration),
      name))
end

- (void) log(level, message, io = $stdout)

This method returns an undefined value.

Logs a message.

Parameters:

  • level (:high, :low)

    The importance of this message

  • message (String)

    The message to be logged

  • io (#puts) (defaults to: $stdout)

    The stream to which the message should be written



61
62
63
64
65
66
67
# File 'lib/nanoc/cli/logger.rb', line 61

def log(level, message, io = $stdout)
  # Don't log when logging is disabled
  return if @level == :off

  # Log when level permits it
  io.puts(message) if @level == :low || @level == level
end