Class: RcrewAI::Rails::Tools::RailsLoggerTool

Inherits:
RCrewAI::Tools::Base
  • Object
show all
Defined in:
lib/rcrewai/rails/tools/rails_logger_tool.rb

Instance Method Summary collapse

Constructor Details

#initialize(tag: "RcrewAI") ⇒ RailsLoggerTool

Returns a new instance of RailsLoggerTool.



16
17
18
19
# File 'lib/rcrewai/rails/tools/rails_logger_tool.rb', line 16

def initialize(tag: "RcrewAI")
  super()
  @tag = tag
end

Instance Method Details

#execute(level:, message:, metadata: {}) ⇒ Object



21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
# File 'lib/rcrewai/rails/tools/rails_logger_tool.rb', line 21

def execute(level:, message:, metadata: {})
  logger = ::Rails.logger
  meta =  || {}
  formatted_message = format_message(message, meta)

  case level.to_sym
  when :debug then logger.debug(formatted_message)
  when :info  then logger.info(formatted_message)
  when :warn  then logger.warn(formatted_message)
  when :error then logger.error(formatted_message)
  when :fatal then logger.fatal(formatted_message)
  else
    return { error: "Unknown log level: #{level}" }
  end

  ActiveSupport::Notifications.instrument("log.rcrewai", {
    level: level,
    message: message,
    metadata: meta,
    tag: @tag
  })

  { logged: true, level: level, message: message }
rescue => e
  { error: "Logging failed", message: e.message }
end