Class: Merb::Logger

Inherits:
Object show all
Defined in:
lib/merb-core/logger.rb

Constant Summary collapse

Levels =

Notes

Ruby (standard) logger levels:

:fatal

An unhandleable error that results in a program crash

:error

A handleable error condition

:warn

A warning

:info

generic (useful) information about system operation

:debug

low-level information for developers

{
  :fatal => 7, 
  :error => 6, 
  :warn  => 4,
  :info  => 3,
  :debug => 0
}

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(*args) ⇒ Logger

To initialize the logger you create a new object, proxies to set_log.

Parameters

*args

Arguments to create the log from. See set_logs for specifics.



121
122
123
124
# File 'lib/merb-core/logger.rb', line 121

def initialize(*args)
  @init_args = args
  set_log(*args)
end

Instance Attribute Details

#aioObject

Returns the value of attribute aio.



42
43
44
# File 'lib/merb-core/logger.rb', line 42

def aio
  @aio
end

#auto_flushObject

Returns the value of attribute auto_flush.



45
46
47
# File 'lib/merb-core/logger.rb', line 45

def auto_flush
  @auto_flush
end

#bufferObject (readonly)

Returns the value of attribute buffer.



46
47
48
# File 'lib/merb-core/logger.rb', line 46

def buffer
  @buffer
end

#delimiterObject

Returns the value of attribute delimiter.



44
45
46
# File 'lib/merb-core/logger.rb', line 44

def delimiter
  @delimiter
end

#init_argsObject (readonly)

Returns the value of attribute init_args.



48
49
50
# File 'lib/merb-core/logger.rb', line 48

def init_args
  @init_args
end

#levelObject

Returns the value of attribute level.



43
44
45
# File 'lib/merb-core/logger.rb', line 43

def level
  @level
end

#logObject (readonly)

Returns the value of attribute log.



47
48
49
# File 'lib/merb-core/logger.rb', line 47

def log
  @log
end

Instance Method Details

#<<(string = nil) ⇒ Object Also known as: push

Appends a message to the log. The methods yield to an optional block and the output of this block will be appended to the message.

Parameters

string<String>

The message to be logged. Defaults to nil.

Returns

String

The resulting message added to the log file.



176
177
178
179
180
181
182
183
184
185
# File 'lib/merb-core/logger.rb', line 176

def <<(string = nil)
  message = ""
  message << delimiter
  message << string if string
  message << "\n" unless message[-1] == ?\n
  @buffer << message
  flush if @auto_flush

  message
end

#closeObject

Close and remove the current log object.



162
163
164
165
166
# File 'lib/merb-core/logger.rb', line 162

def close
  flush
  @log.close if @log.respond_to?(:close)
  @log = nil
end

#flushObject

Flush the entire buffer to the log object.



156
157
158
159
# File 'lib/merb-core/logger.rb', line 156

def flush
  return unless @buffer.size > 0
  @log.write_method(@buffer.slice!(0..-1).to_s)
end

#set_log(log, log_level = nil, delimiter = " ~ ", auto_flush = false) ⇒ Object

Replaces an existing logger with a new one.

Parameters

log<IO, String>

Either an IO object or a name of a logfile.

log_level<~to_sym>

The log level from, e.g. :fatal or :info. Defaults to :error in the production environment and :debug otherwise.

delimiter<String>

Delimiter to use between message sections. Defaults to “ ~ ”.

auto_flush<Boolean>

Whether the log should automatically flush after new messages are added. Defaults to false.



138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
# File 'lib/merb-core/logger.rb', line 138

def set_log(log, log_level = nil, delimiter = " ~ ", auto_flush = false)
  if log_level && Levels[log_level.to_sym]
    @level = Levels[log_level.to_sym]
  elsif Merb.environment == "production"
    @level = Levels[:warn]
  else
    @level = Levels[:debug]
  end
  @buffer     = []
  @delimiter  = delimiter
  @auto_flush = auto_flush

  initialize_log(log)

  Merb.logger = self
end