Class: StrftimeLogger
- Inherits:
-
Object
- Object
- StrftimeLogger
- Includes:
- Severity
- Defined in:
- lib/strftime_logger.rb,
lib/strftime_logger/bridge.rb,
lib/strftime_logger/formatter.rb,
lib/strftime_logger/adapter/file.rb,
lib/strftime_logger/ltsv_formatter.rb
Defined Under Namespace
Modules: Severity Classes: Adapter, Bridge, Formatter, LtsvFormatter
Constant Summary collapse
- SEV_LABEL =
[:debug, :info, :warn, :error, :fatal, :unknown]
Constants included from Severity
Severity::DEBUG, Severity::ERROR, Severity::FATAL, Severity::INFO, Severity::UNKNOWN, Severity::WARN
Instance Attribute Summary collapse
-
#formatter ⇒ Object
Returns the value of attribute formatter.
-
#level ⇒ Object
Logging severity threshold (e.g.
Logger::INFO).
Class Method Summary collapse
Instance Method Summary collapse
- #add(severity, message = nil, &block) ⇒ Object (also: #log)
- #close ⇒ Object
- #debug(msg, &block) ⇒ Object
-
#debug? ⇒ Boolean
Returns
trueiff the current severity level allows for the printing ofDEBUGmessages. - #error(msg, &block) ⇒ Object
-
#error? ⇒ Boolean
Returns
trueiff the current severity level allows for the printing ofERRORmessages. - #fatal(msg, &block) ⇒ Object
-
#fatal? ⇒ Boolean
Returns
trueiff the current severity level allows for the printing ofFATALmessages. - #format_message(severity, message = nil, &block) ⇒ Object
- #info(msg, &block) ⇒ Object
-
#info? ⇒ Boolean
Returns
trueiff the current severity level allows for the printing ofINFOmessages. -
#initialize(path, adapter = nil) ⇒ StrftimeLogger
constructor
Example:.
- #log_level=(log_level) ⇒ Object
- #unknown(msg, &block) ⇒ Object
- #warn(msg, &block) ⇒ Object
-
#warn? ⇒ Boolean
Returns
trueiff the current severity level allows for the printing ofWARNmessages. - #write(msg) ⇒ Object
Constructor Details
#initialize(path, adapter = nil) ⇒ StrftimeLogger
Example:
StrftimeLogger.new('/var/log/foo/webapp.log.%Y%m%d') # String
StrftimeLogger.new('/var/log/foo/webapp.log.%Y%m%d_%H')
Exampl2:
# Hash
StrftimeLogger.new({
debug: '/var/log/foo/webapp.debug.log.%Y%m%d',
info: '/var/log/foo/webapp.info.log.%Y%m%d',
warn: '/var/log/foo/webapp.warn.log.%Y%m%d',
error: '/var/log/foo/webapp.error.log.%Y%m%d',
fatal: '/var/log/foo/webapp.fatal.log.%Y%m%d',
unknown: '/var/log/foo/webapp.unknown.log.%Y%m%d'
})
Exampl3:
# With Specified Adapter
StrftimeLogger.new('/var/log/foo/webapp.log.%Y%m%d', [StrftimeLogger::Adapter::File])
54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 |
# File 'lib/strftime_logger.rb', line 54 def initialize(path, adapter = nil) @level = DEBUG @default_formatter = StrftimeLogger::Formatter.new @formatter = nil if path.is_a?(Hash) @path = path else # make a hash keys = SEV_LABEL vals = [path] * keys.size @path = Hash[*(keys.zip(vals).flatten(1))] end if adapter.nil? @adapter = {} elsif adapter.is_a?(Hash) @adapter = adapter else # make a hash keys = SEV_LABEL vals = [adapter] * keys.size @adapter = Hash[*(keys.zip(vals).flatten(1))] end @bridge = {} SEV_LABEL.each do |level| @bridge[level] = StrftimeLogger::Bridge.new(level, @path[level], @adapter[level]) end end |
Instance Attribute Details
#formatter ⇒ Object
Returns the value of attribute formatter.
28 29 30 |
# File 'lib/strftime_logger.rb', line 28 def formatter @formatter end |
#level ⇒ Object
Logging severity threshold (e.g. Logger::INFO).
27 28 29 |
# File 'lib/strftime_logger.rb', line 27 def level @level end |
Class Method Details
.str_to_level(str) ⇒ Object
90 91 92 93 94 |
# File 'lib/strftime_logger.rb', line 90 def self.str_to_level(str) level = SEV_LABEL.index(str.to_s.downcase.to_sym) raise ArgumentError, 'An argument for #log_level= must be a String or Symbol such as DEBUG, :warn' unless level level end |
Instance Method Details
#add(severity, message = nil, &block) ⇒ Object Also known as: log
101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 |
# File 'lib/strftime_logger.rb', line 101 def add(severity, = nil, &block) severity ||= UNKNOWN if @bridge.nil? or severity < @level return true end log_level = SEV_LABEL[severity] if @bridge[log_level].nil? @bridge[log_level] = StrftimeLogger::Adapter.new(log_level, @path[log_level]) end @bridge[log_level].write((severity, , &block)) true end |
#close ⇒ Object
167 168 169 170 171 172 |
# File 'lib/strftime_logger.rb', line 167 def close SEV_LABEL.each do |level| next if @bridge[level].nil? @bridge[level].close end end |
#debug(msg, &block) ⇒ Object
118 119 120 |
# File 'lib/strftime_logger.rb', line 118 def debug(msg, &block) add(DEBUG, msg, &block) end |
#debug? ⇒ Boolean
Returns true iff the current severity level allows for the printing of DEBUG messages.
149 |
# File 'lib/strftime_logger.rb', line 149 def debug?; @level <= DEBUG; end |
#error(msg, &block) ⇒ Object
130 131 132 |
# File 'lib/strftime_logger.rb', line 130 def error(msg, &block) add(ERROR, msg, &block) end |
#error? ⇒ Boolean
Returns true iff the current severity level allows for the printing of ERROR messages.
161 |
# File 'lib/strftime_logger.rb', line 161 def error?; @level <= ERROR; end |
#fatal(msg, &block) ⇒ Object
134 135 136 |
# File 'lib/strftime_logger.rb', line 134 def fatal(msg, &block) add(FATAL, msg, &block) end |
#fatal? ⇒ Boolean
Returns true iff the current severity level allows for the printing of FATAL messages.
165 |
# File 'lib/strftime_logger.rb', line 165 def fatal?; @level <= FATAL; end |
#format_message(severity, message = nil, &block) ⇒ Object
174 175 176 |
# File 'lib/strftime_logger.rb', line 174 def (severity, = nil, &block) (@formatter || @default_formatter).call(severity, , &block) end |
#info(msg, &block) ⇒ Object
122 123 124 |
# File 'lib/strftime_logger.rb', line 122 def info(msg, &block) add(INFO, msg, &block) end |
#info? ⇒ Boolean
Returns true iff the current severity level allows for the printing of INFO messages.
153 |
# File 'lib/strftime_logger.rb', line 153 def info?; @level <= INFO; end |
#log_level=(log_level) ⇒ Object
96 97 98 |
# File 'lib/strftime_logger.rb', line 96 def log_level=(log_level) @level = self.class.str_to_level(log_level) end |
#unknown(msg, &block) ⇒ Object
138 139 140 |
# File 'lib/strftime_logger.rb', line 138 def unknown(msg, &block) add(UNKNOWN, msg, &block) end |
#warn(msg, &block) ⇒ Object
126 127 128 |
# File 'lib/strftime_logger.rb', line 126 def warn(msg, &block) add(WARN, msg, &block) end |
#warn? ⇒ Boolean
Returns true iff the current severity level allows for the printing of WARN messages.
157 |
# File 'lib/strftime_logger.rb', line 157 def warn?; @level <= WARN; end |
#write(msg) ⇒ Object
142 143 144 145 |
# File 'lib/strftime_logger.rb', line 142 def write(msg) msg.chomp! if msg.respond_to?(:chomp!) @bridge[:info].write((nil, msg)) end |