Class: Bridgetown::LogAdapter
- Inherits:
-
Object
- Object
- Bridgetown::LogAdapter
- Defined in:
- bridgetown-core/lib/bridgetown-core/log_adapter.rb
Constant Summary collapse
- LOG_LEVELS =
{ debug: ::Logger::DEBUG, info: ::Logger::INFO, warn: ::Logger::WARN, error: ::Logger::ERROR, }.freeze
Instance Attribute Summary collapse
-
#level ⇒ Object
readonly
Returns the value of attribute level.
-
#messages ⇒ Object
readonly
Returns the value of attribute messages.
-
#writer ⇒ Object
readonly
Returns the value of attribute writer.
Instance Method Summary collapse
-
#abort_with(topic, message = nil) ⇒ Object
Print an error message and immediately abort the process.
-
#adjust_verbosity(**options) ⇒ Object
-
#debug(topic, message = nil) ⇒ Object
Print a debug message.
-
#error(topic, message = nil) ⇒ Object
Print an error message.
-
#formatted_topic(topic, colon = false) ⇒ String
Format the topic.
-
#info(topic, message = nil) ⇒ Object
Print an informational message.
-
#initialize(writer, level = :info, prefix: [nil, nil]) ⇒ LogAdapter
constructor
Create a new instance of a log writer.
-
#log_level=(level) ⇒ Object
Set the log level on the writer.
-
#message(topic, message = nil) ⇒ String
Build a topic method.
-
#remove_prefix ⇒ Object
-
#set_prefix(prefix = , color: ) ⇒ Object
-
#warn(topic, message = nil) ⇒ Object
Print a warning message.
-
#write(level_of_message, topic, message = nil) ⇒ BasicObject
Log a message.
-
#write_message?(level_of_message) ⇒ Boolean
Check if the message should be written given the log level.
Constructor Details
#initialize(writer, level = :info, prefix: [nil, nil]) ⇒ LogAdapter
Create a new instance of a log writer
20 21 22 23 24 25 26 27 |
# File 'bridgetown-core/lib/bridgetown-core/log_adapter.rb', line 20 def initialize(writer, level = :info, prefix: [nil, nil]) @messages = [] @writer = writer @prefix = prefix self.log_level = level set_prefix end |
Instance Attribute Details
#level ⇒ Object (readonly)
Returns the value of attribute level.
5 6 7 |
# File 'bridgetown-core/lib/bridgetown-core/log_adapter.rb', line 5 def level @level end |
#messages ⇒ Object (readonly)
Returns the value of attribute messages.
5 6 7 |
# File 'bridgetown-core/lib/bridgetown-core/log_adapter.rb', line 5 def @messages end |
#writer ⇒ Object (readonly)
Returns the value of attribute writer.
5 6 7 |
# File 'bridgetown-core/lib/bridgetown-core/log_adapter.rb', line 5 def writer @writer end |
Instance Method Details
#abort_with(topic, message = nil) ⇒ Object
Print an error message and immediately abort the process
85 86 87 88 |
# File 'bridgetown-core/lib/bridgetown-core/log_adapter.rb', line 85 def abort_with(topic, = nil, &) error(topic, , &) abort end |
#adjust_verbosity(**options) ⇒ Object
39 40 41 42 43 44 45 46 47 |
# File 'bridgetown-core/lib/bridgetown-core/log_adapter.rb', line 39 def adjust_verbosity(**) # Quiet always wins. if [:quiet] self.log_level = :error elsif [:verbose] self.log_level = :debug end debug "Logging at level:", LOG_LEVELS.key(writer.level).to_s end |
#debug(topic, message = nil) ⇒ Object
Print a debug message
53 54 55 |
# File 'bridgetown-core/lib/bridgetown-core/log_adapter.rb', line 53 def debug(topic, = nil, &) write(:debug, topic, , &) end |
#error(topic, message = nil) ⇒ Object
Print an error message
77 78 79 |
# File 'bridgetown-core/lib/bridgetown-core/log_adapter.rb', line 77 def error(topic, = nil, &) write(:error, topic, , &) end |
#formatted_topic(topic, colon = false) ⇒ String
Format the topic
111 112 113 |
# File 'bridgetown-core/lib/bridgetown-core/log_adapter.rb', line 111 def formatted_topic(topic, colon = false) # rubocop:disable Style/OptionalBooleanParameter "#{topic}#{colon ? ": " : " "}".rjust(20) end |
#info(topic, message = nil) ⇒ Object
Print an informational message
61 62 63 |
# File 'bridgetown-core/lib/bridgetown-core/log_adapter.rb', line 61 def info(topic, = nil, &) write(:info, topic, , &) end |
#log_level=(level) ⇒ Object
Set the log level on the writer
32 33 34 35 36 37 |
# File 'bridgetown-core/lib/bridgetown-core/log_adapter.rb', line 32 def log_level=(level) writer.level = level if level.is_a?(Integer) && level.between?(0, 3) writer.level = LOG_LEVELS[level] || raise(ArgumentError, "unknown log level") @level = level end |
#message(topic, message = nil) ⇒ String
Build a topic method
95 96 97 98 99 100 101 102 103 104 |
# File 'bridgetown-core/lib/bridgetown-core/log_adapter.rb', line 95 def (topic, = nil) raise ArgumentError, "block or message, not both" if block_given? && = yield if block_given? = .to_s.gsub(%r!\s+!, " ") topic = formatted_topic(topic, block_given?) out = topic + << out out end |
#remove_prefix ⇒ Object
136 137 138 139 140 |
# File 'bridgetown-core/lib/bridgetown-core/log_adapter.rb', line 136 def remove_prefix @prefix = [nil, nil] writer.remove_prefix \ if writer.respond_to?(:remove_prefix) end |
#set_prefix(prefix = , color: ) ⇒ Object
142 143 144 145 146 |
# File 'bridgetown-core/lib/bridgetown-core/log_adapter.rb', line 142 def set_prefix(prefix = @prefix[0], color: @prefix[1]) if writer.respond_to?(:set_prefix) && prefix && color # rubocop:disable Style/GuardClause writer.set_prefix(prefix, color: color) end end |
#warn(topic, message = nil) ⇒ Object
Print a warning message
69 70 71 |
# File 'bridgetown-core/lib/bridgetown-core/log_adapter.rb', line 69 def warn(topic, = nil, &) write(:warn, topic, , &) end |
#write(level_of_message, topic, message = nil) ⇒ BasicObject
Log a message. If a block is provided containing the message, use that instead.
130 131 132 133 134 |
# File 'bridgetown-core/lib/bridgetown-core/log_adapter.rb', line 130 def write(, topic, = nil, &) return false unless () writer.public_send(, (topic, , &)) end |
#write_message?(level_of_message) ⇒ Boolean
Check if the message should be written given the log level
119 120 121 |
# File 'bridgetown-core/lib/bridgetown-core/log_adapter.rb', line 119 def () LOG_LEVELS.fetch(level) <= LOG_LEVELS.fetch() end |