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