class VidazingLogger::LoggerBuilder

Select where the logger will write to

@example Building a Logger

LoggerBuilder.build(name: @name) do |builder|
  builder
    .add_stdout
    .add_build_log(log_dir: @log_dir)
    .add_stderr
    .add_error_log(log_dir: @log_dir)

@see Logging.logger @since 0.2.0

Attributes

logger[R]

The resulting builder logger object

@return [Logging.logger]

Public Class Methods

build(name:) { |builder| ... } click to toggle source

Create a new LoggerBuilder

@param name [String] Reference to obtain the logger. @return [Logging.logger]

# File lib/vidazing_logger/logger_builder.rb, line 35
def self.build(name:)
  builder = new(name: name)
  yield(builder)
  builder.logger
end
new(name:) click to toggle source

Sets up the underlying Logging.logger reference.

@param name [String] Reference to obtain the logger.

# File lib/vidazing_logger/logger_builder.rb, line 44
def initialize(name:)
  # Create a logger before any appenders
  # Avoids a situation where Filters::Normal levels are nil
  #
  # Logging::Filters::Level.new bug:
  # @filter has nil levels set on the first invocation
  @logger = Logging.logger[name]
end

Public Instance Methods

add_build_log(log_dir:) click to toggle source

Adds a VidazingLogger::Appender::BuildLog. Writes to log_dir/build.log

@param log_dir [String] Directory to write logs in @return nil

# File lib/vidazing_logger/logger_builder.rb, line 78
def add_build_log(log_dir:)
  appender = Appenders::BuildLog.new(log_dir: log_dir)
  add_log(vidazing_appender: appender)
end
add_error_log(log_dir:) click to toggle source

Adds a VidazingLogger::Appender::ErrorLog Writes to log_dir/error.log

@param log_dir [String] Directory to write logs in @return nil

# File lib/vidazing_logger/logger_builder.rb, line 88
def add_error_log(log_dir:)
  appender = Appenders::ErrorLog.new(log_dir: log_dir)
  add_log(vidazing_appender: appender)
end
add_stderr() click to toggle source

Outputs log messages to STDERR

@return nil

# File lib/vidazing_logger/logger_builder.rb, line 66
def add_stderr
  appender = Appenders::Stderr.new
  logging_appender_type = Appenders::Type::ID_STDERR

  add_logging_appender(logging_appender_type, vidazing_appender: appender)
end
add_stdout() click to toggle source

Outputs log messages to STDOUT

@return nil

# File lib/vidazing_logger/logger_builder.rb, line 56
def add_stdout
  appender = Appenders::Stdout.new
  logging_appender_type = Appenders::Type::ID_STDOUT

  add_logging_appender(logging_appender_type, vidazing_appender: appender)
end

Private Instance Methods

add_log(vidazing_appender:) click to toggle source
# File lib/vidazing_logger/logger_builder.rb, line 95
def add_log(vidazing_appender:)
  logging_appender_type = Appenders::Type::ID_ROLLING_FILE

  add_logging_appender \
    logging_appender_type,
    vidazing_appender: vidazing_appender
end
add_logging_appender(logging_appender_type, vidazing_appender:) click to toggle source
# File lib/vidazing_logger/logger_builder.rb, line 103
def add_logging_appender(logging_appender_type, vidazing_appender:)
  # Using public_send since ruby methods are not first class
  adapter = Appenders::LoggingGemAdapter.public_send \
    logging_appender_type,
    vidazing_appender: vidazing_appender

  logging_appender = adapter.logging_appender
  @logger.add_appenders(logging_appender)

  self
end