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
].freeze
METHOD_SEVERITY_MAP =
{
  debug: DEBUG,
  info: INFO,
  warn: WARN,
  error: ERROR,
  fatal: FATAL
}.freeze
SEVERITY_NAMES_MAP =
{
  DEBUG => 'debug',
  INFO => 'info',
  WARN => 'warning',
  ERROR => 'error',
  FATAL => 'fatal'
}.freeze

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

#formatterObject

Just for compatibility with Logger, not used



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

def formatter
  @formatter
end

#levelObject

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, progname = nil, &block) ⇒ Object

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



57
58
59
60
61
# File 'lib/lorekeeper/fast_logger.rb', line 57

def add(severity, message_param = nil, progname = nil, &block)
  return true if severity < @level
  message = (block && block.call) || message_param || progname
  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



77
78
79
# File 'lib/lorekeeper/fast_logger.rb', line 77

def log_data(_severity, message)
  write(message)
end

#silence(&block) ⇒ Object

activerecord-session_store v2 is now simply calling silence instead of silence_logger



72
73
74
# File 'lib/lorekeeper/fast_logger.rb', line 72

def silence(&block)
  yield if block_given?
end

#silence_logger(&block) ⇒ Object

Some gems like to add this method. For instance: 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.



67
68
69
# File 'lib/lorekeeper/fast_logger.rb', line 67

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

#write(message) ⇒ Object



81
82
83
# File 'lib/lorekeeper/fast_logger.rb', line 81

def write(message)
  @iodevice.write(message)
end