Class: DurableFlow::WorkflowLogger

Inherits:
Object
  • Object
show all
Defined in:
lib/durable_flow/workflow_logger.rb

Constant Summary collapse

LEVELS =
%w[debug info warn error].freeze

Instance Method Summary collapse

Constructor Details

#initialize(workflow) ⇒ WorkflowLogger

Returns a new instance of WorkflowLogger.



7
8
9
# File 'lib/durable_flow/workflow_logger.rb', line 7

def initialize(workflow)
  @workflow = workflow
end

Instance Method Details

#write(level, message, data = nil, **kwargs) ⇒ Object

Raises:

  • (ArgumentError)


17
18
19
20
21
22
23
24
25
26
27
28
29
30
# File 'lib/durable_flow/workflow_logger.rb', line 17

def write(level, message, data = nil, **kwargs)
  level = level.to_s
  raise ArgumentError, "Unknown log level #{level.inspect}" unless LEVELS.include?(level)

  workflow.send(:ensure_workflow_run!)

  WorkflowLog.create!(
    workflow_run: workflow.workflow_run,
    workflow_step: workflow.send(:current_workflow_step),
    level: level,
    message: message.to_s,
    data: Serializer.dump(normalize_data(data, kwargs)),
  )
end