Class: Makit::Logging::Logger

Inherits:
Object
  • Object
show all
Defined in:
lib/makit/logging/logger.rb

Overview

Main logger class that orchestrates logging through sinks

This class provides a clean interface for logging with support for sink-based output processing. It follows the same pattern as the Commands::Runner but for logging operations.

Examples:

Basic usage

logger = Logger.new
logger.info("Processing started")

With custom sinks

logger = Logger.new(
  sinks: [
    Sinks::Console.new,
    Sinks::File.new(log_file: "custom.log")
  ]
)

Using convenience methods

logger.success("Build completed")
logger.error("Build failed", { repository: "user/repo" })

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(sinks: [], level: :info, verbosity: :normal) ⇒ Logger

Initialize the logger with sinks and log level

Parameters:

  • sinks (Array<Sinks::Base>) (defaults to: [])

    list of sinks to use

  • level (Symbol) (defaults to: :info)

    minimum log level (:debug, :info, :warn, :error, :fatal, :success)

  • verbosity (Symbol) (defaults to: :normal)

    verbosity level (:quiet, :normal, :verbose, :debug)



46
47
48
49
50
51
# File 'lib/makit/logging/logger.rb', line 46

def initialize(sinks: [], level: :info, verbosity: :normal)
  @sinks = sinks
  @level = level
  @verbosity = verbosity
  @logged_tasks = Set.new
end

Instance Attribute Details

#levelSymbol (readonly)

Returns minimum log level for filtering.

Returns:

  • (Symbol)

    minimum log level for filtering



37
38
39
# File 'lib/makit/logging/logger.rb', line 37

def level
  @level
end

#sinksArray<Sinks::Base> (readonly)

Returns list of sinks to process log requests.

Returns:

  • (Array<Sinks::Base>)

    list of sinks to process log requests



35
36
37
# File 'lib/makit/logging/logger.rb', line 35

def sinks
  @sinks
end

#verbositySymbol (readonly)

Returns current verbosity level.

Returns:

  • (Symbol)

    current verbosity level



39
40
41
# File 'lib/makit/logging/logger.rb', line 39

def verbosity
  @verbosity
end

Instance Method Details

#configHash

Get logger configuration

Returns:

  • (Hash)

    logger configuration



154
155
156
157
158
159
160
# File 'lib/makit/logging/logger.rb', line 154

def config
  {
    level: @level,
    sinks_count: @sinks.length,
    sinks: @sinks.map(&:config),
  }
end

#debug(message, context = {}) ⇒ void

This method returns an undefined value.

Log a debug message

Parameters:

  • message (String)

    the log message

  • context (Hash) (defaults to: {})

    additional context information



109
110
111
# File 'lib/makit/logging/logger.rb', line 109

def debug(message, context = {})
  log(:debug, message, context)
end

#error(message, context = {}) ⇒ void

This method returns an undefined value.

Log an error message

Parameters:

  • message (String)

    the log message

  • context (Hash) (defaults to: {})

    additional context information



91
92
93
# File 'lib/makit/logging/logger.rb', line 91

def error(message, context = {})
  log(:error, message, context)
end

#fatal(message, context = {}) ⇒ void

This method returns an undefined value.

Log a fatal message

Parameters:

  • message (String)

    the log message

  • context (Hash) (defaults to: {})

    additional context information



118
119
120
# File 'lib/makit/logging/logger.rb', line 118

def fatal(message, context = {})
  log(:fatal, message, context)
end

#info(message, context = {}) ⇒ void

This method returns an undefined value.

Log an info message

Parameters:

  • message (String)

    the log message

  • context (Hash) (defaults to: {})

    additional context information



73
74
75
# File 'lib/makit/logging/logger.rb', line 73

def info(message, context = {})
  log(:info, message, context)
end

#log(level, message, context = {}, verbosity: :normal) ⇒ void

This method returns an undefined value.

Log a message with the specified level

Parameters:

  • level (Symbol)

    the log level (:debug, :info, :warn, :error, :fatal, :success)

  • message (String)

    the log message

  • context (Hash) (defaults to: {})

    additional context information

  • verbosity (Symbol) (defaults to: :normal)

    verbosity level (:quiet, :normal, :verbose, :debug)



60
61
62
63
64
65
66
# File 'lib/makit/logging/logger.rb', line 60

def log(level, message, context = {}, verbosity: :normal)
  return unless should_log?(level)
  return unless should_show_verbosity?(verbosity)

  log_request = LogRequest.new(level, message, context, verbosity: verbosity)
  execute_sinks(log_request)
end

#quiet(message, context = {}) ⇒ void

This method returns an undefined value.

Log a quiet message (shown even in quiet mode)

Parameters:

  • message (String)

    the log message

  • context (Hash) (defaults to: {})

    additional context information



136
137
138
# File 'lib/makit/logging/logger.rb', line 136

def quiet(message, context = {})
  log(:info, message, context, verbosity: :quiet)
end

#success(message, context = {}) ⇒ void

This method returns an undefined value.

Log a success message

Parameters:

  • message (String)

    the log message

  • context (Hash) (defaults to: {})

    additional context information



82
83
84
# File 'lib/makit/logging/logger.rb', line 82

def success(message, context = {})
  log(:success, message, context)
end

#task_start(message, context = {}) ⇒ Object



140
141
142
143
144
145
146
147
148
149
# File 'lib/makit/logging/logger.rb', line 140

def task_start(message, context = {})
  return if @logged_tasks.include?(message)

  @logged_tasks.add(message)
  # Format task name with colon prefix and bold white styling
  formatted_message = ": #{message}".colorize(:white).bold
  # Add special context to identify task messages
  task_context = context.merge(task_message: true)
  log(:info, formatted_message, task_context)
end

#verbose(message, context = {}) ⇒ void

This method returns an undefined value.

Log a verbose message (only shown in verbose or debug mode)

Parameters:

  • message (String)

    the log message

  • context (Hash) (defaults to: {})

    additional context information



127
128
129
# File 'lib/makit/logging/logger.rb', line 127

def verbose(message, context = {})
  log(:info, message, context, verbosity: :verbose)
end

#warn(message, context = {}) ⇒ void

This method returns an undefined value.

Log a warning message

Parameters:

  • message (String)

    the log message

  • context (Hash) (defaults to: {})

    additional context information



100
101
102
# File 'lib/makit/logging/logger.rb', line 100

def warn(message, context = {})
  log(:warn, message, context)
end