Sha256: 97aeff4f7fab40e93c8fdae047b4fc873d6e3abf4bb86e6d64533beea65b4119

Contents?: true

Size: 1.85 KB

Versions: 1

Compression:

Stored size: 1.85 KB

Contents

module Legion
  module Logging
    module Builder
      def log_format(options = {}, log = @log) # rubocop:disable Metrics/AbcSize
        log.formatter = proc do |severity, datetime, _progname, msg|
          options[:lex_name] = options.key?(:lex) ? "[lex-#{options[:lex]}]" : nil
          unless options[:lex_name].nil?
            data = caller_locations[4].to_s.split('/').last(2)
            runner_trace = {
              type:        data[0],
              file:        file = data[1].split('.')[0], # rubocop:disable Lint/UselessAssignment
              function:    data[1].split('`')[1].delete_suffix('\''),
              line_number: line_number = data[1].split(':')[1] # rubocop:disable Lint/UselessAssignment
            }
          end
          string = "[#{datetime}][#{::Process.pid}]"
          string.concat(options[:lex_name]) unless options[:lex_name].nil?
          if runner_trace.is_a?(Hash) && options[:extended]
            string.concat("[#{runner_trace[:file]}:#{runner_trace[:line_number]}]")
          end
          string.concat(" #{severity} #{msg}\n")
          string
        end
      end

      def output(options)
        @log = ::Logger.new($stdout) if options[:log_file].nil?
        @log = ::Logger.new(options[:log_file]) unless options[:log_file].nil?
      end

      def log_level(level = 'debug', log = @log) # rubocop:disable  Metrics/CyclomaticComplexity, Metrics/PerceivedComplexity
        if level == 'trace'
          log.level = ::Logger::INFO
        elsif level == 'debug'
          log.level = ::Logger::DEBUG
        elsif level == 'info'
          log.level = ::Logger::INFO
        elsif level == 'warn'
          log.level = ::Logger::WARN
        elsif level == 'error'
          log.level = ::Logger::ERROR
        elsif level == 'fatal'
          log.level = ::Logger::FATAL
        end
        @log = log
      end
    end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
legion-logging-0.2.0 lib/legion/logging/builder.rb