Class: Makit::Logging::LogRequest

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

Overview

Represents a log request that flows through the logging middleware chain

This class encapsulates all the information needed for a log entry, including the log level, message, context, and metadata. It provides a clean interface for middleware to process and modify log information.

Examples:

Basic usage

request = LogRequest.new(:info, "Processing started")
request.(process_id: 12345)
puts request.to_h

With context

request = LogRequest.new(:error, "Build failed", {
  repository: "user/repo",
  commit: "abc123"
})

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(level, message, context = {}, verbosity: :normal) ⇒ LogRequest

Initialize a new log request

Parameters:

  • level (Symbol)

    the log level

  • message (String)

    the log message

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

    additional context information

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

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



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

def initialize(level, message, context = {}, verbosity: :normal)
  @level = level
  @message = message
  @context = context.dup
   = {}
  @timestamp = Time.now
  @verbosity = verbosity
end

Instance Attribute Details

#contextHash (readonly)

Returns additional context information.

Returns:

  • (Hash)

    additional context information



29
30
31
# File 'lib/makit/logging/log_request.rb', line 29

def context
  @context
end

#levelSymbol (readonly)

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

Returns:

  • (Symbol)

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



23
24
25
# File 'lib/makit/logging/log_request.rb', line 23

def level
  @level
end

#messageString (readonly)

Returns the log message.

Returns:

  • (String)

    the log message



26
27
28
# File 'lib/makit/logging/log_request.rb', line 26

def message
  @message
end

#metadataHash (readonly)

Returns metadata about the log entry.

Returns:

  • (Hash)

    metadata about the log entry



32
33
34
# File 'lib/makit/logging/log_request.rb', line 32

def 
  
end

#timestampTime (readonly)

Returns when the log request was created.

Returns:

  • (Time)

    when the log request was created



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

def timestamp
  @timestamp
end

#verbositySymbol (readonly)

Returns the verbosity level (:quiet, :normal, :verbose, :debug).

Returns:

  • (Symbol)

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



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

def verbosity
  @verbosity
end

Instance Method Details

#add_metadata(data) ⇒ void

This method returns an undefined value.

Add metadata to the log request

Parameters:

  • data (Hash)

    metadata to add



58
59
60
# File 'lib/makit/logging/log_request.rb', line 58

def (data)
  .merge!(data)
end

#error?Boolean

Check if this is an error level log

Returns:

  • (Boolean)

    true if error level



93
94
95
# File 'lib/makit/logging/log_request.rb', line 93

def error?
  @level == :error || @level == :fatal
end

#info?Boolean

Check if this is an info level log

Returns:

  • (Boolean)

    true if info level



107
108
109
# File 'lib/makit/logging/log_request.rb', line 107

def info?
  @level == :info
end

#success?Boolean

Check if this is a success level log

Returns:

  • (Boolean)

    true if success level



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

def success?
  @level == :success
end

#to_hHash

Convert the log request to a hash representation

Returns:

  • (Hash)

    hash representation of the log request



65
66
67
68
69
70
71
72
73
# File 'lib/makit/logging/log_request.rb', line 65

def to_h
  {
    level: @level,
    message: @message,
    context: @context,
    metadata: ,
    timestamp: @timestamp.iso8601,
  }
end

#to_json(*_args) ⇒ String

Convert the log request to a JSON string

Returns:

  • (String)

    JSON representation of the log request



78
79
80
81
# File 'lib/makit/logging/log_request.rb', line 78

def to_json(*_args)
  require "json"
  JSON.generate(to_h)
end

#to_sString

Get a formatted string representation

Returns:

  • (String)

    formatted string representation



86
87
88
# File 'lib/makit/logging/log_request.rb', line 86

def to_s
  "[#{@timestamp.strftime("%Y-%m-%d %H:%M:%S")}] #{@level.to_s.upcase}: #{@message}"
end

#warn?Boolean

Check if this is a warning level log

Returns:

  • (Boolean)

    true if warn level



114
115
116
# File 'lib/makit/logging/log_request.rb', line 114

def warn?
  @level == :warn
end