Class: Ingenico::Connect::SDK::Logging::RubyCommunicatorLogger

Inherits:
CommunicatorLogger show all
Defined in:
lib/ingenico/connect/sdk/logging/ruby_communicator_logger.rb

Overview

Logging class that Logs messages and errors to a logger. Errors can be logged at a separate level compared to regular messages.

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(logger, log_level, error_level = false) ⇒ RubyCommunicatorLogger

Creates a new RubyCommunicatorLogger instance.

logger

The logger to log messages to. Messages to log will be provided using logger#log(message level, message)

log_level

Log level to use for non-error messages.

error_level

Error logging level to use.

Raises:

  • (ArgumentError)


14
15
16
17
18
19
20
21
22
23
24
# File 'lib/ingenico/connect/sdk/logging/ruby_communicator_logger.rb', line 14

def initialize(logger, log_level, error_level=false)
  # implement the interface
  error_level ||= log_level
  raise ArgumentError unless logger
  raise ArgumentError unless log_level
  raise ArgumentError unless error_level

  @logger = logger
  @logLevel = log_level
  @errorLevel = error_level
end

Class Method Details

.create_logfile(filename) ⇒ Object

Opens or creates a new file in write-only mode with filename.



37
38
39
40
41
42
43
44
45
46
# File 'lib/ingenico/connect/sdk/logging/ruby_communicator_logger.rb', line 37

def self.create_logfile(filename)
  logdev = begin
            open(filename, (File::WRONLY | File::APPEND | File::CREAT | File::EXCL))
          rescue Errno::EEXIST
            # file is created by another process
            open_logfile(filename)
          end
  logdev.sync = true
  logdev
end

.open_logfile(filename) ⇒ Object

Opens or creates a new file in write-only mode with filename.



49
50
51
52
53
54
55
# File 'lib/ingenico/connect/sdk/logging/ruby_communicator_logger.rb', line 49

def self.open_logfile(filename)
  begin
    open(filename, (File::WRONLY | File::APPEND))
  rescue Errno::ENOENT
    create_logfile(filename)
  end
end

Instance Method Details

#log(msg, thrown = false) ⇒ Object

Logs a single error or non-error message to the logger.



27
28
29
30
31
32
33
34
# File 'lib/ingenico/connect/sdk/logging/ruby_communicator_logger.rb', line 27

def log(msg, thrown=false)
  # use Ruby Logger
  if thrown 
    @logger.log(@errorLevel) { msg + $RS + thrown.backtrace.join($RS) }
  else 
    @logger.log(@logLevel, msg)
  end
end