Class: ShellHelpers::MoreLogger

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

Overview

like Logger but with more levels

Direct Known Subclasses

ColorLogger

Defined Under Namespace

Modules: Levels Classes: Formatter

Constant Summary collapse

WrongLevel =
Class.new(StandardError)
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
  'success' => Levels::SUCCESS,
  'important' => Levels::IMPORTANT,
  'warn' => Levels::WARN, #2
  'error' => Levels::ERROR, #3
  'fatal' => Levels::FATAL, #4
  'unknown' => Levels::UNKNOWN, #5
}

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(*args, levels: {}, default: :info, active: :verbose, quiet: :warn, **kwds) ⇒ MoreLogger

Returns a new instance of MoreLogger.



70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
# File 'lib/shell_helpers/logger.bak.rb', line 70

def initialize(*args, levels: {}, default: :info, active: :verbose, quiet: :warn, **kwds)
  @default=default
  @active=active
  @quiet=quiet
  super(*args, **kwds)
  @default_formatter = Formatter.new
  @level=severity_lvl(@default)
  klass=self.singleton_class
  levels=log_levels.merge!(levels)
  levels.keys.each do |lvl, cst|
    klass.define_method(lvl.to_sym) do |progname=nil, **opts, &block|
      add(lvl.to_sym, nil, progname, **opts, &block)
    end
    klass.define_method("#{lvl}?".to_sym) do
      @level <= cst
    end
  end
end

Instance Attribute Details

#activeObject

Returns the value of attribute active.



68
69
70
# File 'lib/shell_helpers/logger.bak.rb', line 68

def active
  @active
end

#defaultObject

Returns the value of attribute default.



68
69
70
# File 'lib/shell_helpers/logger.bak.rb', line 68

def default
  @default
end

#quietObject

Returns the value of attribute quiet.



68
69
70
# File 'lib/shell_helpers/logger.bak.rb', line 68

def quiet
  @quiet
end

Instance Method Details

#add(severity, message = nil, progname = nil, default: @default, quiet: @quiet, callback: nil) ⇒ Object

log with given security. Also accepts 'true'



90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
# File 'lib/shell_helpers/logger.bak.rb', line 90

def add(severity, message = nil, progname = nil, default: @default, quiet: @quiet, callback: nil)
  severity=severity(severity, default: default, quiet: quiet)
  severity_lvl=severity_lvl(severity)
  if @logdev.nil? or severity_lvl < @level
    return true
  end
  if progname.nil?
    progname = @progname
  end
  if message.nil?
    if block_given?
      message = yield
    else
      message = progname
      progname = @progname
    end
  end
  callback.call(message, progname, severity) if callback
  @logdev.write(
    format_message(format_severity(severity), Time.now, progname, message))
  true
end

#cli_level(level, active: @active, quiet: @quiet) ⇒ Object

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



139
140
141
142
143
# File 'lib/shell_helpers/logger.bak.rb', line 139

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

#level=(severity) ⇒ Object



134
135
136
# File 'lib/shell_helpers/logger.bak.rb', line 134

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

#log_levelsObject



63
64
65
66
# File 'lib/shell_helpers/logger.bak.rb', line 63

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

#severity(severity, default: @default, quiet: @quiet) ⇒ Object



113
114
115
116
117
118
# File 'lib/shell_helpers/logger.bak.rb', line 113

def severity(severity, default: @default, quiet: @quiet)
  severity ||= UNKNOWN
  severity=default if severity == true
  severity=quiet if severity == false
  severity
end

#severity_lvl(severity, **opts) ⇒ Object



120
121
122
123
124
125
126
127
128
129
130
131
132
# File 'lib/shell_helpers/logger.bak.rb', line 120

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