Class: Lorekeeper::FastLogger

Inherits:
Object
  • Object
show all
Includes:
Logger::Severity
Defined in:
lib/lorekeeper/fast_logger.rb

Overview

Very simple, very fast logger

Direct Known Subclasses

JSONLogger, SimpleLogger

Defined Under Namespace

Classes: LogDevice, LogDeviceMutex

Constant Summary collapse

LOGGING_METHODS =
[:debug, :info, :warn, :error, :fatal]
METHOD_SEVERITY_MAP =
{ debug: DEBUG, info: INFO, warn: WARN, error: ERROR, fatal: FATAL }

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(file) ⇒ FastLogger

Returns a new instance of FastLogger.



18
19
20
21
22
# File 'lib/lorekeeper/fast_logger.rb', line 18

def initialize(file)
  @level = DEBUG
  @iodevice = LogDevice.new(file)
  @file = file # We only keep this so we can inspect where we are sending the logs
end

Instance Attribute Details

#formatter ⇒ Object

Just for compatibility with Logger, not used



10
11
12
# File 'lib/lorekeeper/fast_logger.rb', line 10

def formatter
  @formatter
end

#level ⇒ Object

Current level, default: DEBUG



9
10
11
# File 'lib/lorekeeper/fast_logger.rb', line 9

def level
  @level
end

Instance Method Details

#add(severity, message_param = nil, _ = nil, &block) ⇒ Object

This is part of the standard Logger API, we need this to be compatible



36
37
38
39
40
# File 'lib/lorekeeper/fast_logger.rb', line 36

def add(severity, message_param = nil, _ = nil, &block)
  return true if severity < @level
  message = message_param || (block && block.call)
  log_data(severity, message.freeze)
end

#debug? ⇒ Boolean

Returns:

  • (Boolean)


12
# File 'lib/lorekeeper/fast_logger.rb', line 12

def debug?; level <= DEBUG; end

#error? ⇒ Boolean

Returns:

  • (Boolean)


15
# File 'lib/lorekeeper/fast_logger.rb', line 15

def error?; level <= ERROR; end

#fatal? ⇒ Boolean

Returns:

  • (Boolean)


16
# File 'lib/lorekeeper/fast_logger.rb', line 16

def fatal?; level <= FATAL; end

#info? ⇒ Boolean

Returns:

  • (Boolean)


13
# File 'lib/lorekeeper/fast_logger.rb', line 13

def info?; level <= INFO; end

#log_data(_severity, message) ⇒ Object

inherited classes probably want to reimplement this



51
52
53
# File 'lib/lorekeeper/fast_logger.rb', line 51

def log_data(_severity, message)
  @iodevice.write(message)
end

#silence_logger(&block) ⇒ Object

Some gems like to add this method. For instance: https://github.com/rails/activerecord-session_store To avoid needing to monkey-patch Lorekeeper just to get this method, we are adding a simple non-functional version here.



46
47
48
# File 'lib/lorekeeper/fast_logger.rb', line 46

def silence_logger(&block)
  yield if block_given?
end

#warn? ⇒ Boolean

Returns:

  • (Boolean)


14
# File 'lib/lorekeeper/fast_logger.rb', line 14

def warn?; level <= WARN; end