Class: Console::Logger

Inherits:
Object
  • Object
show all
Extended by:
Fiber::Local
Defined in:
lib/console/logger.rb

Constant Summary collapse

DEFAULT_LEVEL =
1

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(output, **options) ⇒ Logger

Returns a new instance of Logger.



63
64
65
# File 'lib/console/logger.rb', line 63

def initialize(output, **options)
	super(output, **options)
end

Class Method Details

.default_log_level(env = ENV) ⇒ Object

Set the default log level based on ‘$DEBUG` and `$VERBOSE`. You can also specify CONSOLE_LEVEL=debug or CONSOLE_LEVEL=info in environment. mislav.net/2011/06/ruby-verbose-mode/ has more details about how it all fits together.



23
24
25
26
27
28
29
30
31
32
33
# File 'lib/console/logger.rb', line 23

def self.default_log_level(env = ENV)
	if level = env['CONSOLE_LEVEL']
		LEVELS[level.to_sym] || level.to_i
	elsif $DEBUG
		DEBUG
	elsif $VERBOSE.nil?
		WARN
	else
		INFO
	end
end

.default_logger(output = $stderr, env = ENV, **options) ⇒ Object



40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
# File 'lib/console/logger.rb', line 40

def self.default_logger(output = $stderr, env = ENV, **options)
	if options[:verbose].nil?
		options[:verbose] = self.verbose?(env)
	end
	
	if options[:level].nil?
		options[:level] = self.default_log_level(env)
	end
	
	output = Output.new(output, env, **options)
	logger = self.new(output, **options)
	
	Resolver.default_resolver(logger)
	
	return logger
end

.localObject



57
58
59
# File 'lib/console/logger.rb', line 57

def self.local
	self.default_logger
end

.verbose?(env = ENV) ⇒ Boolean

Controls verbose output using ‘$VERBOSE`.

Returns:

  • (Boolean)


36
37
38
# File 'lib/console/logger.rb', line 36

def self.verbose?(env = ENV)
	!$VERBOSE.nil? || env['CONSOLE_VERBOSE']
end

Instance Method Details

#error(subject, *arguments, **options, &block) ⇒ Object



73
74
75
76
77
78
79
80
81
82
# File 'lib/console/logger.rb', line 73

def error(subject, *arguments, **options, &block)
	# This is a special case where we want to create a failure event from an exception.
	# It's common to see `Console.error(self, exception)` in code.
	if arguments.first.is_a?(Exception)
		exception = arguments.shift
		options[:event] = Event::Failure.for(exception)
	end
	
	super
end

#failure(subject, exception, **options) ⇒ Object



84
85
86
# File 'lib/console/logger.rb', line 84

def failure(subject, exception, **options)
	error(subject, event: Event::Failure.for(exception), **options)
end

#progress(subject, total, **options) ⇒ Object



67
68
69
70
71
# File 'lib/console/logger.rb', line 67

def progress(subject, total, **options)
	options[:severity] ||= :info
	
	Progress.new(subject, total, **options)
end