Module: Fig::VerboseLogging

Defined in:
lib/fig/verbose_logging.rb

Overview

Core verbose logging infrastructure with timing support

Constant Summary collapse

@@verbose_enabled =
false

Class Method Summary collapse

Class Method Details

.disable_verbose!Object



15
16
17
# File 'lib/fig/verbose_logging.rb', line 15

def self.disable_verbose!
  @@verbose_enabled = false
end

.enable_verbose!Object



11
12
13
# File 'lib/fig/verbose_logging.rb', line 11

def self.enable_verbose!
  @@verbose_enabled = true
end

.format_duration(seconds) ⇒ Object



56
57
58
59
60
61
62
63
64
65
66
# File 'lib/fig/verbose_logging.rb', line 56

def self.format_duration(seconds)
  if seconds < 1.0
    "#{(seconds * 1000).round(1)}ms"
  elsif seconds < 60.0
    "#{seconds.round(2)}s"
  else
    minutes = (seconds / 60).floor
    remaining_seconds = seconds - (minutes * 60)
    "#{minutes}m #{remaining_seconds.round(1)}s"
  end
end

.should_log_verbose?Boolean

Returns:

  • (Boolean)


23
24
25
# File 'lib/fig/verbose_logging.rb', line 23

def self.should_log_verbose?
  @@verbose_enabled || Fig::Logging.debug?
end

.time_operation(operation_name, &block) ⇒ Object



38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
# File 'lib/fig/verbose_logging.rb', line 38

def self.time_operation(operation_name, &block)
  return yield unless should_log_verbose?
  
  start_time = Process.clock_gettime(Process::CLOCK_MONOTONIC)
  verbose "starting #{operation_name}"
  
  begin
    result = yield
    duration = Process.clock_gettime(Process::CLOCK_MONOTONIC) - start_time
    verbose "completed #{operation_name} in #{format_duration(duration)}"
    result
  rescue => error
    duration = Process.clock_gettime(Process::CLOCK_MONOTONIC) - start_time
    verbose "failed #{operation_name} after #{format_duration(duration)}: #{error.class.name}: #{error.message}"
    raise
  end
end

.verbose(message) ⇒ Object



27
28
29
30
31
32
33
34
35
36
# File 'lib/fig/verbose_logging.rb', line 27

def self.verbose(message)
  return unless should_log_verbose?
  
  if Fig::Logging.info?
    Fig::Logging.info "[VERBOSE] #{message}"
  else
    # fallback to stderr if logging is completely disabled
    $stderr.puts "[VERBOSE] #{message}" if @@verbose_enabled
  end
end

.verbose_enabled?Boolean

Returns:

  • (Boolean)


19
20
21
# File 'lib/fig/verbose_logging.rb', line 19

def self.verbose_enabled?
  @@verbose_enabled
end