Class: SimpleLogger::Plain

Inherits:
Object
  • Object
show all
Defined in:
lib/simple-logger/plain.rb

Direct Known Subclasses

Logger

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) ⇒ Plain

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.



96
97
98
99
# File 'lib/simple-logger/plain.rb', line 96

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

Instance Attribute Details

#auto_flushObject

Returns the value of attribute auto_flush.



47
48
49
# File 'lib/simple-logger/plain.rb', line 47

def auto_flush
  @auto_flush
end

#bufferObject (readonly)

Returns the value of attribute buffer.



48
49
50
# File 'lib/simple-logger/plain.rb', line 48

def buffer
  @buffer
end

#delimiterObject

Returns the value of attribute delimiter.



46
47
48
# File 'lib/simple-logger/plain.rb', line 46

def delimiter
  @delimiter
end

#init_argsObject (readonly)

Returns the value of attribute init_args.



50
51
52
# File 'lib/simple-logger/plain.rb', line 50

def init_args
  @init_args
end

#levelObject

Returns the value of attribute level.



45
46
47
# File 'lib/simple-logger/plain.rb', line 45

def level
  @level
end

#logObject (readonly)

Returns the value of attribute log.



49
50
51
# File 'lib/simple-logger/plain.rb', line 49

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.



147
148
149
150
151
152
153
154
155
156
# File 'lib/simple-logger/plain.rb', line 147

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.



133
134
135
136
137
# File 'lib/simple-logger/plain.rb', line 133

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

#flushObject

Flush the entire buffer to the log object.



127
128
129
130
# File 'lib/simple-logger/plain.rb', line 127

def flush
  return unless @buffer.size > 0
  @log.write(@buffer.slice!(0..-1).join)
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.



113
114
115
116
117
118
119
120
121
122
123
124
# File 'lib/simple-logger/plain.rb', line 113

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]
  else
    @level = Levels[:debug]
  end
  @buffer     = []
  @delimiter  = delimiter
  @auto_flush = auto_flush

  initialize_log(log)
end