Class: ShellHelpers::ColorLogger

Inherits:
MoreLogger
  • Object
show all
Defined in:
lib/shell_helpers/logger.rb,
lib/shell_helpers/logger.bak.rb

Overview

{{{1

Direct Known Subclasses

CLILogger

Defined Under Namespace

Modules: Levels

Constant Summary collapse

ColorLoggerError =

{{{1

Class.new(StandardError)
WrongLevel =
Class.new(ColorLoggerError)
LOG_LEVELS =
{
  quiet: Levels::QUIET,
  debug3: Levels::DEBUG3,
  debug2: Levels::DEBUG2,
  debug1: Levels::DEBUG1,
  debug: Levels::DEBUG, #0
  verbose: Levels::VERBOSE,
  verbose1: Levels::VERBOSE1,
  verbose2: Levels::VERBOSE2,
  verbose3: Levels::VERBOSE3,
  info: Levels::INFO, #1
  mark: :info,
  success: Levels::SUCCESS,
  important: Levels::IMPORTANT,
  warn: Levels::WARN, #2
  error: Levels::ERROR, #3
  fatal: Levels::FATAL, #4
  unknown: Levels::UNKNOWN, #5
}
CLI_COLORS_BASE =
{
  # info: [:bold],
  success: [:green, :bold],
  important: [:blue, :bold],
  warn: [:yellow, :bold],
  error: [:red, :bold],
  fatal: [:red, :bold]
}
CLI_COLORS =
{
  mark: {lvl: :info, colors: :bold}
}

Instance Attribute Summary collapse

Attributes inherited from MoreLogger

#active, #default, #quiet

Instance Method Summary collapse

Constructor Details

#initialize(*args, cli: {}, **kwds) {|_self, @default_formatter| ... } ⇒ ColorLogger

Returns a new instance of ColorLogger.

Yields:

Yield Parameters:



152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
# File 'lib/shell_helpers/logger.rb', line 152

def initialize(*args, levels: {}, default_lvl: :info, level: default_lvl, verbose_lvl: :verbose, quiet_lvl: :unknown, default_formatter: :color, **kwds)
  @default_lvl=default_lvl
  @verbose_lvl=verbose_lvl
  @quiet_lvl=quiet_lvl
  super(*args, level: severity_lvl(level), **kwds)
  @default_formatter = ColorFormatter.create(default_formatter)
  @level=severity_lvl(@default_lvl)
  klass=self.singleton_class
  levels=log_levels.merge!(levels)
  levels.keys.each do |lvl|
    klass.class_eval do
      define_method(lvl.to_sym) do |msg=nil, **opts, &block|
        add(lvl.to_sym, msg, **opts, &block)
      end
      define_method("#{lvl}?".to_sym) do
        @level <= severity_lvl(lvl)
      end
    end
  end
  yield self, @default_formatter if block_given?
end

Instance Attribute Details

#default_formatterObject

Returns the value of attribute default_formatter.



150
151
152
# File 'lib/shell_helpers/logger.rb', line 150

def default_formatter
  @default_formatter
end

#default_lvlObject

Returns the value of attribute default_lvl.



150
151
152
# File 'lib/shell_helpers/logger.rb', line 150

def default_lvl
  @default_lvl
end

#quiet_lvlObject

Returns the value of attribute quiet_lvl.



150
151
152
# File 'lib/shell_helpers/logger.rb', line 150

def quiet_lvl
  @quiet_lvl
end

#rawObject

Returns the value of attribute raw.



206
207
208
# File 'lib/shell_helpers/logger.bak.rb', line 206

def raw
  @raw
end

#verbose_lvlObject

Returns the value of attribute verbose_lvl.



150
151
152
# File 'lib/shell_helpers/logger.rb', line 150

def verbose_lvl
  @verbose_lvl
end

Instance Method Details

#add(severity, message = nil, progname = nil, color: [], raw: @raw, **args) ⇒ Object

log with given security. Also accepts 'true'



206
207
208
209
210
211
212
213
214
215
216
217
218
219
# File 'lib/shell_helpers/logger.rb', line 206

def add(severity, message = nil, progname: @progname, callback: nil, format: nil, **opts)
  severity=severity(severity, **opts)
  severity_lvl=severity_lvl(severity)
  if @logdev.nil? or severity_lvl < @level
    return true
  end
  if message.nil?
    message = yield if block_given?
  end
  callback.call(message, progname, severity) if callback
  @logdev.write(
    format_message(severity, Time.now, progname, message, formatter: format, caller: self, **opts))
  true
end

#cli_colorsObject



160
161
162
163
164
165
166
167
168
169
170
171
# File 'lib/shell_helpers/logger.bak.rb', line 160

def cli_colors
  return @cli_colors if defined?(@cli_colors)
  @cli_colors={}
  base_colors=CLI_COLORS_BASE
  base_colors.each do |k,v|
    r={colors: v}
    @cli_colors[k.to_sym]=r
  end
  @cli_colors.merge!(CLI_COLORS)
  @cli_colors
  #mode => {lvl: lvl, colors: colors }
end

#cli_level(level, active: @verbose_lvl, disactive: @quiet_lvl) ⇒ Object

like level= but for clis, so we can pass a default if level=true



226
227
228
229
230
# File 'lib/shell_helpers/logger.rb', line 226

def cli_level(level, active: @verbose_lvl, disactive: @quiet_lvl)
  level=active if level==true #for cli
  level=disactive if level==false #for cli
  self.level=level
end

#datetime_formatObject



179
180
181
# File 'lib/shell_helpers/logger.rb', line 179

def datetime_format
  @default_formatter.datetime_format if @default_formatter.respond_to?(:datetime_format)
end

#datetime_format=(datetime_format) ⇒ Object



174
175
176
177
# File 'lib/shell_helpers/logger.rb', line 174

def datetime_format=(datetime_format)
  @default_formatter.datetime_format = datetime_format if @default_formatter.respond_to?(:datetime_format)
  @formatter.datetime_format = datetime_format if defined? @formatter and @formatter.respond_to?(:datetime_format)
end

#format_message(severity, datetime, progname, msg, formatter: nil, **opts) ⇒ Object



201
202
203
# File 'lib/shell_helpers/logger.rb', line 201

def format_message(severity, datetime, progname, msg, formatter: nil, **opts)
  get_formatter(formatter).call(severity, datetime, progname, msg, **opts)
end

#formatter=(form) ⇒ Object



183
184
185
186
187
188
189
# File 'lib/shell_helpers/logger.rb', line 183

def formatter=(form)
  if form.nil?
    super
  else
    @formatter=get_formatter(form) 
  end
end

#get_formatter(form = nil) ⇒ Object



191
192
193
194
195
196
197
198
199
# File 'lib/shell_helpers/logger.rb', line 191

def get_formatter(form=nil)
  if form.nil?
    @formatter || @default_formatter
  else
    formatter=ColorFormatter.create(form)
    formatter.datetime_format = @default_formatter.datetime_format if formatter.respond_to?(:datetime_format) and @default_formatter.respond_to?(:datetime_format)
    formatter
  end
end

#level=(severity) ⇒ Object



221
222
223
# File 'lib/shell_helpers/logger.rb', line 221

def level=(severity)
  @level = severity_lvl(severity)
end

#log_levelsObject



124
125
126
127
# File 'lib/shell_helpers/logger.rb', line 124

def log_levels
  @levels ||= LOG_LEVELS.dup
  @levels
end

#severity(severity, default_lvl: @default_lvl, quiet_lvl: @quiet_lvl, **_opts) ⇒ Object



129
130
131
132
133
134
# File 'lib/shell_helpers/logger.rb', line 129

def severity(severity, default_lvl: @default_lvl, quiet_lvl: @quiet_lvl, **_opts)
  severity ||= :unknown
  severity=default_lvl if severity == true
  severity=quiet_lvl if severity == false
  severity
end

#severity_lvl(severity, **opts) ⇒ Object



136
137
138
139
140
141
142
143
144
145
146
147
148
# File 'lib/shell_helpers/logger.rb', line 136

def severity_lvl(severity, **opts)
  severity=severity(severity, **opts)
  if severity.is_a?(Numeric)
    return severity
  else
    sev=severity.to_s.downcase.to_sym
    if log_levels.key?(sev)
      return severity_lvl(log_levels[sev])
    else
      raise WrongLevel.new(severity)
    end
  end
end