Class: Vedeu::Logging::Log

Inherits:
Object
  • Object
show all
Defined in:
lib/vedeu/logging/log.rb

Overview

Provides the ability to log anything to the Vedeu log file.

Class Method Summary collapse

Class Method Details

.formatted_message(message) ⇒ String (private)

Parameters:

  • message (String)

    The message you wish to emit, useful for debugging.

Returns:

  • (String)


91
92
93
# File 'lib/vedeu/logging/log.rb', line 91

def formatted_message(message)
  "#{timestamp}#{message}\n" if message
end

.log(message:, type: :info) ⇒ String

Write a message to the Vedeu log file.

Examples:

Vedeu.log(type:    :debug,
          message: 'A useful debugging message: Error!')

Parameters:

  • message (String)

    The message you wish to emit, useful for debugging.

  • type (Symbol) (defaults to: :info)

    Colour code messages in the log file depending on their source. See Configuration.log_types

Returns:

  • (String)


31
32
33
34
35
36
37
# File 'lib/vedeu/logging/log.rb', line 31

def log(message:, type: :info)
  if Vedeu.config.log? && Vedeu.config.loggable?(type)
    output = log_entry(type, message)
    logger.debug(output)
    output
  end
end

.log_entry(type, message) ⇒ String (private)

Returns the message:

[type] message

Parameters:

  • type (Symbol)

    The type of log message.

  • message (String)

    The message you wish to emit, useful for debugging.

Returns:

  • (String)


102
103
104
105
106
107
108
109
# File 'lib/vedeu/logging/log.rb', line 102

def log_entry(type, message)
  colours = Vedeu.config.log_types.fetch(type, [:default, :default])

  [
    Vedeu.esc.colour(colours[0]) { "[#{type}]".ljust(11) },
    Vedeu.esc.colour(colours[1]) { message },
  ].join
end

.log_stderr(message:, type: :error) ⇒ String

Parameters:

  • message (String)

    The message you wish to emit, useful for debugging.

  • type (Symbol) (defaults to: :error)

    See types for valid values.

Returns:

  • (String)


55
56
57
58
59
# File 'lib/vedeu/logging/log.rb', line 55

def log_stderr(message:, type: :error)
  log(message: message, type: type)

  $stderr.puts log_entry(type, message)
end

.log_stdout(message:, type: :info) ⇒ String

Parameters:

  • message (String)

    The message you wish to emit, useful for debugging.

  • type (Symbol) (defaults to: :info)

    See Configuration.log_types for valid values.

Returns:

  • (String)


44
45
46
47
48
# File 'lib/vedeu/logging/log.rb', line 44

def log_stdout(message:, type: :info)
  log(message: message, type: type)

  $stdout.puts log_entry(type, message)
end

.loggerBoolean (private)

Returns:



80
81
82
83
84
85
86
# File 'lib/vedeu/logging/log.rb', line 80

def logger
  MonoLogger.new(Vedeu.config.log).tap do |log|
    log.formatter = proc do |_, _, _, message|
      formatted_message(message)
    end
  end
end

.timestampString Also known as: log_timestamp

Returns:

  • (String)


63
64
65
66
67
68
69
70
71
72
73
74
# File 'lib/vedeu/logging/log.rb', line 63

def timestamp
  @now  = Vedeu.clock_time
  @time ||= 0.0
  @last ||= @now

  unless @last == @time
    @time += (@now - @last).round(4)
    @last = @now
  end

  "[#{format('%7.4f', @time.to_s)}] ".rjust(7)
end