Module: Thin::Logging

Included in:
Command, Connection, Controllers::Controller, Server
Defined in:
lib/thin/logging.rb

Overview

To be included in classes to allow some basic logging that can be silenced (Logging.silent=) or made more verbose. Logging.trace=: log all raw request and response and

messages logged with +trace+.

Logging.silent=: silence all log all log messages

altogether.

Defined Under Namespace

Classes: SimpleFormatter

Class Attribute Summary collapse

Class Method Summary collapse

Instance Method Summary collapse

Class Attribute Details

.loggerObject

Returns the value of attribute logger.



21
22
23
# File 'lib/thin/logging.rb', line 21

def logger
  @logger
end

.trace_loggerObject

Returns the value of attribute trace_logger.



22
23
24
# File 'lib/thin/logging.rb', line 22

def trace_logger
  @trace_logger
end

Class Method Details

.debug=(val) ⇒ Object



113
114
115
# File 'lib/thin/logging.rb', line 113

def debug=(val)
  self.level = (val ? Logger::DEBUG : Logger::INFO)
end

.debug?Boolean

Provided for backwards compatibility. Callers should be using the level (on the Logging module or on the instance) to figure out what the log level is.

Returns:

  • (Boolean)


110
111
112
# File 'lib/thin/logging.rb', line 110

def debug?
  self.level == Logger::DEBUG
end

.levelObject



48
49
50
# File 'lib/thin/logging.rb', line 48

def level
  @logger ? @logger.level : nil # or 'silent'
end

.level=(value) ⇒ Object



52
53
54
55
56
# File 'lib/thin/logging.rb', line 52

def level=(value)
  # If logging has been silenced, then re-enable logging
  @logger = Logger.new(STDOUT) if @logger.nil?
  @logger.level = value
end

.log_debug(msg = nil) ⇒ Object

Log a message at DEBUG level



140
141
142
# File 'lib/thin/logging.rb', line 140

def log_debug(msg=nil)
  Logging.log_msg(msg || yield, Logger::DEBUG)
end

.log_error(msg, e = nil) ⇒ Object

Log a message at ERROR level (and maybe a backtrace)



154
155
156
157
# File 'lib/thin/logging.rb', line 154

def log_error(msg, e=nil)
  log_msg = msg + ": #{e}\n\t" + e.backtrace.join("\n\t") + "\n" if e
  Logging.log_msg(log_msg, Logger::ERROR)
end

.log_info(msg) ⇒ Object

Log a message at INFO level



147
148
149
# File 'lib/thin/logging.rb', line 147

def log_info(msg)
  Logging.log_msg(msg || yield, Logger::INFO)
end

.log_msg(msg, level = Logger::INFO) ⇒ Object



97
98
99
100
# File 'lib/thin/logging.rb', line 97

def log_msg(msg, level=Logger::INFO)
  return unless @logger
  @logger.add(level, msg)
end

.silent=(shh) ⇒ Object



36
37
38
39
40
41
42
# File 'lib/thin/logging.rb', line 36

def silent=(shh)
  if shh
    @logger = nil
  else
    @logger ||= Logger.new(STDOUT)
  end
end

.silent?Boolean

Returns:

  • (Boolean)


44
45
46
# File 'lib/thin/logging.rb', line 44

def silent?
  !@logger.nil?
end

.trace(msg = nil) ⇒ Object

Log a message if tracing is activated



133
134
135
# File 'lib/thin/logging.rb', line 133

def trace(msg=nil)
  Logging.trace_msg(msg) if msg
end

.trace=(enabled) ⇒ Object



24
25
26
27
28
29
30
# File 'lib/thin/logging.rb', line 24

def trace=(enabled)
  if enabled
    @trace_logger ||= Logger.new(STDOUT)
  else
    @trace_logger = nil
  end
end

.trace?Boolean

Returns:

  • (Boolean)


32
33
34
# File 'lib/thin/logging.rb', line 32

def trace?
  !@trace_logger.nil?
end

.trace_msg(msg) ⇒ Object



102
103
104
105
# File 'lib/thin/logging.rb', line 102

def trace_msg(msg)
  return unless @trace_logger
  @trace_logger.info(msg)
end

Instance Method Details

#log(msg) ⇒ Object

For backwards compatibility



162
163
164
165
166
# File 'lib/thin/logging.rb', line 162

def log msg
  STDERR.puts('#log has been deprecated, please use the ' \
              'log_level function instead (e.g. - log_info).')
  log_info(msg)
end

#log_debug(msg = nil) ⇒ Object

Log a message at DEBUG level



140
141
142
# File 'lib/thin/logging.rb', line 140

def log_debug(msg=nil)
  Logging.log_msg(msg || yield, Logger::DEBUG)
end

#log_error(msg, e = nil) ⇒ Object

Log a message at ERROR level (and maybe a backtrace)



154
155
156
157
# File 'lib/thin/logging.rb', line 154

def log_error(msg, e=nil)
  log_msg = msg + ": #{e}\n\t" + e.backtrace.join("\n\t") + "\n" if e
  Logging.log_msg(log_msg, Logger::ERROR)
end

#log_info(msg) ⇒ Object

Log a message at INFO level



147
148
149
# File 'lib/thin/logging.rb', line 147

def log_info(msg)
  Logging.log_msg(msg || yield, Logger::INFO)
end

#silentObject



124
125
126
# File 'lib/thin/logging.rb', line 124

def silent
  Logging.silent?
end

#silent=(value) ⇒ Object



128
129
130
# File 'lib/thin/logging.rb', line 128

def silent=(value)
  Logging.silent = value
end

#trace(msg = nil) ⇒ Object

Log a message if tracing is activated



133
134
135
# File 'lib/thin/logging.rb', line 133

def trace(msg=nil)
  Logging.trace_msg(msg) if msg
end