Class: Itchy::Log

Inherits:
Object
  • Object
show all
Includes:
Logger::Severity
Defined in:
lib/itchy/log.rb

Overview

Handles static logging from the entire application without the need for a traveling logger instance.

Constant Summary collapse

SUBSCRIPTION_HANDLE =
'itchy.log'

Instance Attribute Summary collapse

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(log_dev, log_prefix = '[itchy]') ⇒ Log

Creates a new itchy logger instance. Subsequent logging can be then performed via static Itchy::Log methods.

Parameters:

  • log_dev (IO, String)

    The log device. This is a filename (String) or IO object (typically STDOUT,

  • log_prefix (String) (defaults to: '[itchy]')

    String placed in front of every logged message STDERR, or an open file).



17
18
19
20
21
22
23
24
25
26
27
28
29
30
# File 'lib/itchy/log.rb', line 17

def initialize(log_dev, log_prefix = '[itchy]')
  if log_dev.is_a? ::Logger
    @logger = log_dev
  else
    @logger = ::Logger.new(log_dev)
  end

  @log_prefix = log_prefix.blank? ? '' : log_prefix.strip

  # subscribe to log messages and send to logger
  @log_subscriber = ActiveSupport::Notifications.subscribe(self.class::SUBSCRIPTION_HANDLE) do |_name, _start, _finish, _id, payload|
    @logger.log(payload[:level], "#{@log_prefix} #{payload[:message]}") if @logger
  end
end

Instance Attribute Details

#log_prefixObject (readonly)

Returns the value of attribute log_prefix.



7
8
9
# File 'lib/itchy/log.rb', line 7

def log_prefix
  @log_prefix
end

#loggerObject (readonly)

Returns the value of attribute logger.



7
8
9
# File 'lib/itchy/log.rb', line 7

def logger
  @logger
end

Class Method Details

.debug(message) ⇒ Object

See Also:



52
53
54
# File 'lib/itchy/log.rb', line 52

def self.debug(message)
  ActiveSupport::Notifications.instrument(self::SUBSCRIPTION_HANDLE, level: ::Logger::DEBUG, message: message)
end

.error(message) ⇒ Object

See Also:



69
70
71
# File 'lib/itchy/log.rb', line 69

def self.error(message)
  ActiveSupport::Notifications.instrument(self::SUBSCRIPTION_HANDLE, level: ::Logger::ERROR, message: message)
end

.fatal(message) ⇒ Object

See Also:



74
75
76
# File 'lib/itchy/log.rb', line 74

def self.fatal(message)
  ActiveSupport::Notifications.instrument(self::SUBSCRIPTION_HANDLE, level: ::Logger::FATAL, message: message)
end

.info(message) ⇒ Object

Log an INFO message.

Parameters:

  • message (String)

    message the message to log; does not need to be a String



59
60
61
# File 'lib/itchy/log.rb', line 59

def self.info(message)
  ActiveSupport::Notifications.instrument(self::SUBSCRIPTION_HANDLE, level: ::Logger::INFO, message: message)
end

.warn(message) ⇒ Object

See Also:



64
65
66
# File 'lib/itchy/log.rb', line 64

def self.warn(message)
  ActiveSupport::Notifications.instrument(self::SUBSCRIPTION_HANDLE, level: ::Logger::WARN, message: message)
end

Instance Method Details

#closeObject

Closes active logger subscription.



33
34
35
# File 'lib/itchy/log.rb', line 33

def close
  ActiveSupport::Notifications.unsubscribe(@log_subscriber)
end

#level::Logger::Severity

Gets current logging level.

Returns:

  • (::Logger::Severity)


47
48
49
# File 'lib/itchy/log.rb', line 47

def level
  @logger.level
end

#level=(severity) ⇒ Object

Sets current logging level.

Parameters:

  • severity (::Logger::Severity)

    severity



40
41
42
# File 'lib/itchy/log.rb', line 40

def level=(severity)
  @logger.level = severity
end