Module: CemWinSpec::Logging

Included in:
CemWinSpec, IapTunnel, ModuleArchiveBuilder, TestRunner, WinExec::BaseCmd, WinExec::ConnectionOpts, WinExec::Exec, WinExec::Factory, WinExec::Output
Defined in:
lib/cem_win_spec/logging.rb,
lib/cem_win_spec/logging/formatter.rb

Overview

Logging for CemWinSpec

Defined Under Namespace

Modules: Formatter Classes: MultiLogger

Constant Summary collapse

LEVEL_MAP =
{
  'debug' => Logger::DEBUG,
  'info' => Logger::INFO,
  'warn' => Logger::WARN,
  'error' => Logger::ERROR,
  'fatal' => Logger::FATAL,
  'unknown' => Logger::UNKNOWN,
}

Class Method Summary collapse

Instance Method Summary collapse

Class Method Details

.current_log_formatSymbol

Shows the current log format style if set, or the default if not.

Returns:

  • (Symbol)

    the current log format style



104
105
106
# File 'lib/cem_win_spec/logging.rb', line 104

def current_log_format
  @current_log_format ||= :text
end

.current_log_levelLogger::Severity

Shortcut method for logger.level

Returns:

  • (Logger::Severity)


89
90
91
# File 'lib/cem_win_spec/logging.rb', line 89

def current_log_level
  logger.level
end

.included(base) ⇒ Object

Provides class method wrappers for logging methods



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
# File 'lib/cem_win_spec/logging.rb', line 118

def self.included(base)
  class << base
    def log_setup!(options = {})
      CemWinSpec::Logging.log_setup!(options)
    end

    def logger
      CemWinSpec::Logging.logger
    end

    def current_log_level
      CemWinSpec::Logging.current_log_level
    end

    def new_log_level(level)
      CemWinSpec::Logging.new_log_level(level)
    end

    def current_log_format
      CemWinSpec::Logging.current_log_format
    end

    def new_log_formatter(f)
      CemWinSpec::Logging.new_log_formatter(f)
    end
  end
end

.log_setup!(options = {}) ⇒ Object



40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
# File 'lib/cem_win_spec/logging.rb', line 40

def log_setup!(options = {})
  console_l_level = if (options.key?(:debug) && options[:debug]) || ENV['RUNNER_DEBUG']
                      new_log_level('debug')
                    else
                      new_log_level('info')
                    end
  console_l_formatter = if ENV['CI'] || ENV['GITHUB_ACTIONS']
                          new_log_formatter(options[:log_format] || 'github_action')
                        else
                          new_log_formatter(options[:log_format] || 'text')
                        end
  file_l_level = new_log_level(options[:log_level] || 'debug')
  file_l_formatter = new_log_formatter(options[:log_format] || 'file')
  loggers = []
  if options[:log_file]
    loggers << ::Logger.new(
      options[:log_file],
      level: file_l_level,
      formatter: file_l_formatter,
      progname: 'CemWinSpec',
      datetime_format: '%Y%m%dT%H%M%S%z',
    )
  end
  unless options[:quiet]
    loggers << ::Logger.new(
      $stdout,
      level: console_l_level,
      formatter: console_l_formatter,
      progname: 'CemWinSpec',
      datetime_format: '%Y%m%dT%H%M%S%z',
    )
  end
  @logger = MultiLogger.new(*loggers)
end

.loggerLogger

Exposes a logger instance. Will either use the currently set logger or create a new one.

Returns:

  • (Logger)


78
79
80
81
82
83
84
85
# File 'lib/cem_win_spec/logging.rb', line 78

def logger
  unless @logger
    warn 'Logger not set up! Setting up default logger.'
    log_setup!
  end

  @logger
end

.new_log_formatter(f) ⇒ Proc

Sets the current log format style and returns a proc to be passed to Logger#formatter=

Parameters:

  • f (Symbol)

    the log format style to set

Returns:

  • (Proc)

    the proc to be passed to Logger#formatter=



112
113
114
# File 'lib/cem_win_spec/logging.rb', line 112

def new_log_formatter(f)
  Formatter.for(f)
end

.new_log_level(level) ⇒ Object

Gets a log level from a string and returns the corresponding Logger::Severity constant.

Parameters:

  • level (String)

    the log level to get

Raises:

  • (ArgumentError)


96
97
98
99
100
# File 'lib/cem_win_spec/logging.rb', line 96

def new_log_level(level)
  raise ArgumentError, 'Log level not recognized' unless LEVEL_MAP[level.to_s.downcase]

  LEVEL_MAP[level.downcase]
end

Instance Method Details

#current_log_formatObject



165
166
167
# File 'lib/cem_win_spec/logging.rb', line 165

def current_log_format
  CemWinSpec::Logging.current_log_format
end

#current_log_levelObject

Exposes the current log level



156
157
158
# File 'lib/cem_win_spec/logging.rb', line 156

def current_log_level
  CemWinSpec::Logging.current_log_level
end

#log_setup!(options = {}) ⇒ Object



146
147
148
# File 'lib/cem_win_spec/logging.rb', line 146

def log_setup!(options = {})
  CemWinSpec::Logging.log_setup!(options)
end

#loggerObject

Exposes the logger instance



151
152
153
# File 'lib/cem_win_spec/logging.rb', line 151

def logger
  CemWinSpec::Logging.logger
end

#new_log_formatter(f) ⇒ Object



169
170
171
# File 'lib/cem_win_spec/logging.rb', line 169

def new_log_formatter(f)
  CemWinSpec::Logging.new_log_formatter(f)
end

#new_log_level(level) ⇒ Object

Exposes setting the log level



161
162
163
# File 'lib/cem_win_spec/logging.rb', line 161

def new_log_level(level)
  CemWinSpec::Logging.new_log_level(level)
end