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