lib/makit/logging.rb in makit-0.0.1 vs lib/makit/logging.rb in makit-0.0.2

- old
+ new

@@ -1,96 +1,96 @@ -# frozen_string_literal: true - -require "logger" -require "colorize" -require_relative "symbols" - -# This module provides classes for the Makit gem. -module Makit - module Logging - ANSI_COLOR_REGEX = /\e\[[0-9;]*m/ - - class PlainFormatter < Logger::Formatter - def call(_severity, _time, _progname, msg) - stripped_msg = msg.gsub(ANSI_COLOR_REGEX, "") # Remove ANSI color codes - "#{stripped_msg}\n" - end - end - - class ColorFormatter < Logger::Formatter - def call(_severity, _time, _progname, msg) - "#{msg}\n" - end - end - - # This class provide methods for working with Directories/ - # - # Example: - # - # Makit::Directory.find_directory_with_pattern("/home/user", "*.rb") - # - class MultiLogger - def initialize(*targets) - @targets = targets - end - - def add(severity, message = nil, progname = nil, &block) - @targets.each do |logger| - logger.add(severity, message, progname, &block) - logger.flush if logger.respond_to?(:flush) - end - end - - def <<(message) - @targets.each do |logger| - logger << message - logger.flush if logger.respond_to?(:flush) - end - end - - def close - @targets.each(&:close) - end - - def method_missing(method, *args, &block) - @targets.each { |logger| logger.send(method, *args, &block) } - end - - def respond_to_missing?(method, include_private = false) - @targets.all? { |logger| logger.respond_to?(method, include_private) } - end - - def self.create_logger - stdout_logger = Logger.new($stdout) # ColoredLogger.new(STDOUT) - stdout_logger.level = Logger::DEBUG - # Assign the custom formatter to the file_logger - stdout_logger.formatter = ColorFormatter.new - - # if clean or clobber commands are used, then log ONLY to stdout - if ARGV.include?("clean") || ARGV.include?("clobber") - return stdout_logger - end - if Makit::Environment.project_root_directory.nil? - logger = stdout_logger - else - #log_filename = if ARGV.empty? - # "#{Makit::Environment.project_root_directory}/artifacts/rake.log" - # else - # "#{Makit::Environment.project_root_directory}/artifacts/rake_#{ARGV.join("_").gsub(":", - # "_")}.log" - # end - # FileUtils.remove_file(log_file) if File.exist?(log_file) - #FileUtils.mkdir_p(File.dirname(log_filename)) unless Dir.exist?(File.dirname(log_filename)) - #File.open(log_filename, "w") - #file_logger = Logger.new(log_filename) - #file_logger.level = Logger::DEBUG - # Assign the custom formatter to the file_logger - #file_logger.formatter = PlainFormatter.new - #logger = MultiLogger.new(file_logger, stdout_logger) - logger = stdout_logger - end - - logger - end - end - end -end +# frozen_string_literal: true + +require "logger" +require "colorize" +require_relative "symbols" + +# This module provides classes for the Makit gem. +module Makit + module Logging + ANSI_COLOR_REGEX = /\e\[[0-9;]*m/ + + class PlainFormatter < Logger::Formatter + def call(_severity, _time, _progname, msg) + stripped_msg = msg.gsub(ANSI_COLOR_REGEX, "") # Remove ANSI color codes + "#{stripped_msg}\n" + end + end + + class ColorFormatter < Logger::Formatter + def call(_severity, _time, _progname, msg) + "#{msg}\n" + end + end + + # This class provide methods for working with Directories/ + # + # Example: + # + # Makit::Directory.find_directory_with_pattern("/home/user", "*.rb") + # + class MultiLogger + def initialize(*targets) + @targets = targets + end + + def add(severity, message = nil, progname = nil, &block) + @targets.each do |logger| + logger.add(severity, message, progname, &block) + logger.flush if logger.respond_to?(:flush) + end + end + + def <<(message) + @targets.each do |logger| + logger << message + logger.flush if logger.respond_to?(:flush) + end + end + + def close + @targets.each(&:close) + end + + def method_missing(method, *args, &block) + @targets.each { |logger| logger.send(method, *args, &block) } + end + + def respond_to_missing?(method, include_private = false) + @targets.all? { |logger| logger.respond_to?(method, include_private) } + end + + def self.create_logger + stdout_logger = Logger.new($stdout) # ColoredLogger.new(STDOUT) + stdout_logger.level = Logger::DEBUG + # Assign the custom formatter to the file_logger + stdout_logger.formatter = ColorFormatter.new + + # if clean or clobber commands are used, then log ONLY to stdout + if ARGV.include?("clean") || ARGV.include?("clobber") + return stdout_logger + end + if Makit::Environment.project_root_directory.nil? + logger = stdout_logger + else + #log_filename = if ARGV.empty? + # "#{Makit::Environment.project_root_directory}/artifacts/rake.log" + # else + # "#{Makit::Environment.project_root_directory}/artifacts/rake_#{ARGV.join("_").gsub(":", + # "_")}.log" + # end + # FileUtils.remove_file(log_file) if File.exist?(log_file) + #FileUtils.mkdir_p(File.dirname(log_filename)) unless Dir.exist?(File.dirname(log_filename)) + #File.open(log_filename, "w") + #file_logger = Logger.new(log_filename) + #file_logger.level = Logger::DEBUG + # Assign the custom formatter to the file_logger + #file_logger.formatter = PlainFormatter.new + #logger = MultiLogger.new(file_logger, stdout_logger) + logger = stdout_logger + end + + logger + end + end + end +end