Module: Dakwak::Logger
- Includes:
- Silencable
- Included in:
- Channel, Configurator, MongoAdapter, PrivateChannel, Station
- Defined in:
- lib/dakwak/logger.rb
Overview
A thread-safe logging interface.
Class Method Summary collapse
-
.included(base) ⇒ Object
:nodoc:.
Instance Method Summary collapse
- #initialize ⇒ Object
-
#log(msg, level, opts = {}) ⇒ Object
Logs a message.
-
#log_indent(&block) ⇒ Object
Messages logged within the given block will be indented by 1 step.
-
#log_indent_dec ⇒ Object
Resets 1 step of whitespace indentation from all messages logged in the future.
-
#log_indent_inc ⇒ Object
Indents all messages logged in the future with whitespace by 1 step.
-
#logging_context(context) ⇒ Object
Assigns the logging context (NDC) of this logger instance.
Methods included from Silencable
Class Method Details
.included(base) ⇒ Object
:nodoc:
76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 |
# File 'lib/dakwak/logger.rb', line 76 def self.included(base) # :nodoc: if defined?(Rails) then @@levels ||= { } LogLevel.constants.each { |c| @@levels[LogLevel.const_get(c)] = c.to_s.downcase } send :define_method, :"log" do |msg, level, _| Rails.logger.send(@@levels[level], msg) end end LogLevel.constants.each { |level| method = :"log_#{level.to_s.downcase}" return if method_defined? method send :define_method, :"log_#{level.to_s.downcase}" do |*args| msg = args[0] opts = args[1] || {} log(msg, LogLevel.const_get(level), opts) end } end |
Instance Method Details
#initialize ⇒ Object
116 117 118 119 120 121 |
# File 'lib/dakwak/logger.rb', line 116 def initialize @__log_ctx ||= "unnamed" @__log_indent ||= 0 @__log_prefix ||= "" super() end |
#log(msg, level, opts = {}) ⇒ Object
Logs a message.
70 71 72 73 74 |
# File 'lib/dakwak/logger.rb', line 70 def log(msg, level, opts = {}) print("#{@__log_prefix}#{"\t" * (@__log_indent || 0)}#{msg}") Dakwak.log_manager.log("#{@__log_prefix}#{"\t" * (@__log_indent || 0)}#{msg}", level, opts) unless silent? end |
#log_indent(&block) ⇒ Object
Messages logged within the given block will be indented by 1 step
110 111 112 113 114 |
# File 'lib/dakwak/logger.rb', line 110 def log_indent(&block) # :yield: log_indent_inc if block_given? then yield end log_indent_dec end |
#log_indent_dec ⇒ Object
Resets 1 step of whitespace indentation from all messages logged in the future.
104 105 106 107 |
# File 'lib/dakwak/logger.rb', line 104 def log_indent_dec @__log_indent ||= 0 @__log_indent -= 1 end |
#log_indent_inc ⇒ Object
Indents all messages logged in the future with whitespace by 1 step.
98 99 100 101 |
# File 'lib/dakwak/logger.rb', line 98 def log_indent_inc @__log_indent ||= 0 @__log_indent += 1 end |
#logging_context(context) ⇒ Object
Assigns the logging context (NDC) of this logger instance.
48 49 50 |
# File 'lib/dakwak/logger.rb', line 48 def logging_context @__log_ctx end |