Class: LogStruct::Log::ActiveJob

Inherits:
T::Struct
  • Object
show all
Extended by:
T::Sig
Includes:
Interfaces::AdditionalDataField, Interfaces::CommonFields, MergeAdditionalDataFields, SerializeCommon
Defined in:
lib/log_struct/log/active_job.rb

Overview

ActiveJob log entry for structured logging

Constant Summary collapse

ActiveJobEvent =
T.type_alias {
  T.any(
    Event::Enqueue,
    Event::Schedule,
    Event::Start,
    Event::Finish
  )
}

Instance Attribute Summary collapse

Instance Method Summary collapse

Methods included from MergeAdditionalDataFields

#merge_additional_data_fields

Methods included from SerializeCommon

#as_json, #serialize_common

Constructor Details

#initialize(source: T.let(Source::Job, Source::Job), event:, timestamp:, level: T.let(Level::Info, Level), job_id: nil, job_class: nil, queue_name: nil, arguments: nil, duration: nil, additional_data: {}) ⇒ void

Parameters:

  • source (Source::Job) (defaults to: T.let(Source::Job, Source::Job))

    Common fields

  • event (ActiveJobEvent)
  • timestamp (Time)
  • level (Level) (defaults to: T.let(Level::Info, Level))
  • job_id (String, nil) (defaults to: nil)

    Job-specific fields

  • job_class (String, nil) (defaults to: nil)
  • queue_name (String, nil) (defaults to: nil)
  • arguments (Array<T.untyped>, nil) (defaults to: nil)
  • duration (Float, nil) (defaults to: nil)
  • additional_data (Hash{Symbol => T.untyped}) (defaults to: {})


# File ''

const :source, Source::Job, default: T.let(Source::Job, Source::Job)
const :event, ActiveJobEvent
const :timestamp, Time, factory: -> { Time.now }
const :level, Level, default: T.let(Level::Info, Level)
const :job_id, T.nilable(String), default: nil
const :job_class, T.nilable(String), default: nil
const :queue_name, T.nilable(String), default: nil
const :arguments, T.nilable(T::Array[T.untyped]), default: nil
const :duration, T.nilable(Float), default: nil
const :additional_data, T::Hash[Symbol, T.untyped], default: {}

Instance Attribute Details

#additional_dataHash{Symbol => T.untyped} (readonly)

Returns the value of prop additional_data.

Returns:

  • (Hash{Symbol => T.untyped})


# File ''

const :additional_data, T::Hash[Symbol, T.untyped], default: {}

#argumentsArray<T.untyped>? (readonly)

Returns the value of prop arguments.

Returns:

  • (Array<T.untyped>, nil)


# File ''

const :arguments, T.nilable(T::Array[T.untyped]), default: nil

#durationFloat? (readonly)

Returns the value of prop duration.

Returns:

  • (Float, nil)


# File ''

const :duration, T.nilable(Float), default: nil

#eventActiveJobEvent (readonly)

Returns the value of prop event.

Returns:



# File ''

const :event, ActiveJobEvent

#job_classString? (readonly)

Returns the value of prop job_class.

Returns:

  • (String, nil)


# File ''

const :job_class, T.nilable(String), default: nil

#job_idString? (readonly)

Job-specific fields

Returns:

  • (String, nil)


# File ''

const :job_id, T.nilable(String), default: nil

#levelLevel (readonly)

Returns the value of prop level.

Returns:



# File ''

const :level, Level, default: T.let(Level::Info, Level)

#queue_nameString? (readonly)

Returns the value of prop queue_name.

Returns:

  • (String, nil)


# File ''

const :queue_name, T.nilable(String), default: nil

#sourceSource::Job (readonly)

Common fields

Returns:



# File ''

const :source, Source::Job, default: T.let(Source::Job, Source::Job)

#timestampTime (readonly)

Returns the value of prop timestamp.

Returns:

  • (Time)


# File ''

const :timestamp, Time, factory: -> { Time.now }

Instance Method Details

#serialize(strict = true) ⇒ Hash{Symbol => T.untyped}

Convert the log entry to a hash for serialization

Parameters:

  • strict (Boolean) (defaults to: true)

Returns:

  • (Hash{Symbol => T.untyped})


49
50
51
52
53
54
55
56
57
58
59
60
61
# File 'lib/log_struct/log/active_job.rb', line 49

def serialize(strict = true)
  hash = serialize_common(strict)
  merge_additional_data_fields(hash)

  # Add job-specific fields if they're present
  hash[LOG_KEYS.fetch(:job_id)] = job_id if job_id
  hash[LOG_KEYS.fetch(:job_class)] = job_class if job_class
  hash[LOG_KEYS.fetch(:queue_name)] = queue_name if queue_name
  hash[LOG_KEYS.fetch(:arguments)] = arguments if arguments
  hash[LOG_KEYS.fetch(:duration)] = duration if duration

  hash
end