Class: LogStruct::Log::Sidekiq

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

Overview

Sidekiq log entry for structured logging

Constant Summary collapse

SidekiqEvent =

Define valid event types for Sidekiq (currently only Log is used)

T.type_alias { Event::Log }

Instance Attribute Summary collapse

Instance Method Summary collapse

Methods included from SerializeCommon

#as_json, #serialize_common

Constructor Details

#initialize(source: T.let(Source::Sidekiq, Source::Sidekiq), event: T.let(Event::Log, SidekiqEvent), timestamp:, level: T.let(Level::Info, Level), process_id: nil, thread_id: nil, message: nil, context: nil) ⇒ void

Parameters:

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

    Common fields

  • event (SidekiqEvent) (defaults to: T.let(Event::Log, SidekiqEvent))
  • timestamp (Time)
  • level (Level) (defaults to: T.let(Level::Info, Level))
  • process_id (Integer, nil) (defaults to: nil)

    Sidekiq-specific fields

  • thread_id (Integer, String, nil) (defaults to: nil)
  • message (String, nil) (defaults to: nil)
  • context (Hash{Symbol => T.untyped}, nil) (defaults to: nil)


# File ''

const :source, Source::Sidekiq, default: T.let(Source::Sidekiq, Source::Sidekiq)
const :event, SidekiqEvent, default: T.let(Event::Log, SidekiqEvent)
const :timestamp, Time, factory: -> { Time.now }
const :level, Level, default: T.let(Level::Info, Level)
const :process_id, T.nilable(Integer), default: nil
const :thread_id, T.nilable(T.any(Integer, String)), default: nil
const :message, T.nilable(String), default: nil
const :context, T.nilable(T::Hash[Symbol, T.untyped]), default: nil

Instance Attribute Details

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

Returns the value of prop context.

Returns:

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


# File ''

const :context, T.nilable(T::Hash[Symbol, T.untyped]), default: nil

#eventSidekiqEvent (readonly)

Returns the value of prop event.

Returns:



# File ''

const :event, SidekiqEvent, default: T.let(Event::Log, SidekiqEvent)

#levelLevel (readonly)

Returns the value of prop level.

Returns:



# File ''

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

#messageString? (readonly)

Returns the value of prop message.

Returns:

  • (String, nil)


# File ''

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

#process_idInteger? (readonly)

Sidekiq-specific fields

Returns:

  • (Integer, nil)


# File ''

const :process_id, T.nilable(Integer), default: nil

#sourceSource::Sidekiq (readonly)

Common fields

Returns:



# File ''

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

#thread_idInteger, ... (readonly)

Returns the value of prop thread_id.

Returns:

  • (Integer, String, nil)


# File ''

const :thread_id, T.nilable(T.any(Integer, String)), default: nil

#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})


37
38
39
40
41
42
43
44
45
46
47
# File 'lib/log_struct/log/sidekiq.rb', line 37

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

  # Add Sidekiq-specific fields if they're present
  hash[LOG_KEYS.fetch(:message)] = message if message
  hash[LOG_KEYS.fetch(:context)] = context if context
  hash[LOG_KEYS.fetch(:process_id)] = process_id if process_id
  hash[LOG_KEYS.fetch(:thread_id)] = thread_id if thread_id

  hash
end