logstruct 0.1.2 → 0.1.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (88) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +12 -1
  3. data/README.md +4 -6
  4. data/lib/log_struct/concerns/configuration.rb +2 -2
  5. data/lib/log_struct/config_struct/integrations.rb +5 -0
  6. data/lib/log_struct/enums/log_field.rb +12 -1
  7. data/lib/log_struct/integrations/action_mailer/error_handling.rb +121 -27
  8. data/lib/log_struct/integrations/action_mailer/event_logging.rb +30 -14
  9. data/lib/log_struct/integrations/action_mailer/metadata_collection.rb +18 -24
  10. data/lib/log_struct/integrations/action_mailer.rb +13 -6
  11. data/lib/log_struct/integrations/active_job/log_subscriber.rb +2 -2
  12. data/lib/log_struct/integrations/active_storage.rb +8 -8
  13. data/lib/log_struct/integrations/ahoy.rb +2 -3
  14. data/lib/log_struct/integrations/carrierwave.rb +8 -10
  15. data/lib/log_struct/integrations/good_job/log_subscriber.rb +5 -5
  16. data/lib/log_struct/integrations/good_job/logger.rb +2 -6
  17. data/lib/log_struct/integrations/good_job.rb +1 -1
  18. data/lib/log_struct/integrations/host_authorization.rb +27 -36
  19. data/lib/log_struct/integrations/lograge.rb +1 -1
  20. data/lib/log_struct/integrations/shrine.rb +21 -24
  21. data/lib/log_struct/integrations/sidekiq/logger.rb +8 -1
  22. data/lib/log_struct/log/action_mailer/delivered.rb +14 -49
  23. data/lib/log_struct/log/action_mailer/delivery.rb +14 -49
  24. data/lib/log_struct/log/action_mailer/error.rb +72 -0
  25. data/lib/log_struct/log/action_mailer.rb +15 -2
  26. data/lib/log_struct/log/active_job/enqueue.rb +9 -73
  27. data/lib/log_struct/log/active_job/finish.rb +9 -76
  28. data/lib/log_struct/log/active_job/schedule.rb +9 -73
  29. data/lib/log_struct/log/active_job/start.rb +9 -76
  30. data/lib/log_struct/log/active_job.rb +2 -2
  31. data/lib/log_struct/log/active_model_serializers.rb +5 -45
  32. data/lib/log_struct/log/active_storage/delete.rb +8 -46
  33. data/lib/log_struct/log/active_storage/download.rb +9 -55
  34. data/lib/log_struct/log/active_storage/exist.rb +9 -49
  35. data/lib/log_struct/log/active_storage/metadata.rb +9 -49
  36. data/lib/log_struct/log/active_storage/stream.rb +9 -49
  37. data/lib/log_struct/log/active_storage/upload.rb +9 -64
  38. data/lib/log_struct/log/active_storage/url.rb +9 -49
  39. data/lib/log_struct/log/active_storage.rb +2 -2
  40. data/lib/log_struct/log/ahoy.rb +5 -43
  41. data/lib/log_struct/log/carrierwave/delete.rb +15 -69
  42. data/lib/log_struct/log/carrierwave/download.rb +15 -77
  43. data/lib/log_struct/log/carrierwave/upload.rb +15 -83
  44. data/lib/log_struct/log/carrierwave.rb +13 -4
  45. data/lib/log_struct/log/dotenv/load.rb +5 -33
  46. data/lib/log_struct/log/dotenv/restore.rb +5 -33
  47. data/lib/log_struct/log/dotenv/save.rb +5 -33
  48. data/lib/log_struct/log/dotenv/update.rb +5 -33
  49. data/lib/log_struct/log/error.rb +7 -40
  50. data/lib/log_struct/log/good_job/enqueue.rb +9 -72
  51. data/lib/log_struct/log/good_job/error.rb +9 -89
  52. data/lib/log_struct/log/good_job/finish.rb +9 -78
  53. data/lib/log_struct/log/good_job/log.rb +11 -75
  54. data/lib/log_struct/log/good_job/schedule.rb +7 -78
  55. data/lib/log_struct/log/good_job/start.rb +7 -78
  56. data/lib/log_struct/log/good_job.rb +2 -2
  57. data/lib/log_struct/log/plain.rb +5 -32
  58. data/lib/log_struct/log/puma/shutdown.rb +5 -32
  59. data/lib/log_struct/log/puma/start.rb +5 -56
  60. data/lib/log_struct/log/request.rb +7 -90
  61. data/lib/log_struct/log/security/blocked_host.rb +12 -73
  62. data/lib/log_struct/log/security/csrf_violation.rb +6 -67
  63. data/lib/log_struct/log/security/ip_spoof.rb +6 -73
  64. data/lib/log_struct/log/shrine/delete.rb +6 -41
  65. data/lib/log_struct/log/shrine/download.rb +6 -44
  66. data/lib/log_struct/log/shrine/exist.rb +6 -44
  67. data/lib/log_struct/log/shrine/metadata.rb +8 -46
  68. data/lib/log_struct/log/shrine/upload.rb +6 -53
  69. data/lib/log_struct/log/sidekiq.rb +5 -42
  70. data/lib/log_struct/log/sql.rb +5 -65
  71. data/lib/log_struct/log.rb +2 -2
  72. data/lib/log_struct/monkey_patches/active_support/tagged_logging/formatter.rb +12 -1
  73. data/lib/log_struct/railtie.rb +0 -22
  74. data/lib/log_struct/semantic_logger/concerns/log_methods.rb +100 -0
  75. data/lib/log_struct/semantic_logger/logger.rb +46 -15
  76. data/lib/log_struct/semantic_logger/setup.rb +11 -7
  77. data/lib/log_struct/shared/{shared/add_request_fields.rb → add_request_fields.rb} +2 -2
  78. data/lib/log_struct/shared/{shared/merge_additional_data_fields.rb → merge_additional_data_fields.rb} +1 -1
  79. data/lib/log_struct/shared/{shared/serialize_common.rb → serialize_common.rb} +9 -3
  80. data/lib/log_struct/{log/shared → shared}/serialize_common_public.rb +2 -2
  81. data/lib/log_struct/version.rb +1 -1
  82. data/lib/log_struct.rb +4 -1
  83. data/logstruct.gemspec +1 -1
  84. metadata +9 -11
  85. data/lib/log_struct/integrations/action_mailer/callbacks.rb +0 -100
  86. data/lib/log_struct/log/shared/add_request_fields.rb +0 -4
  87. data/lib/log_struct/log/shared/merge_additional_data_fields.rb +0 -4
  88. data/lib/log_struct/log/shared/serialize_common.rb +0 -4
@@ -9,9 +9,9 @@
9
9
  require "log_struct/shared/interfaces/common_fields"
10
10
  require "log_struct/shared/interfaces/additional_data_field"
11
11
  require "log_struct/shared/interfaces/request_fields"
12
- require "log_struct/shared/shared/serialize_common"
13
- require "log_struct/shared/shared/merge_additional_data_fields"
14
- require "log_struct/shared/shared/add_request_fields"
12
+ require "log_struct/shared/serialize_common"
13
+ require "log_struct/shared/merge_additional_data_fields"
14
+ require "log_struct/shared/add_request_fields"
15
15
  require_relative "../../enums/source"
16
16
  require_relative "../../enums/event"
17
17
  require_relative "../../enums/level"
@@ -21,11 +21,6 @@ module LogStruct
21
21
  module Log
22
22
  class Dotenv
23
23
  class Update < T::Struct
24
- # typed: strict
25
- # frozen_string_literal: true
26
-
27
- extend T::Sig
28
-
29
24
  extend T::Sig
30
25
 
31
26
  # Shared/common fields
@@ -37,39 +32,16 @@ module LogStruct
37
32
  # Event-specific fields
38
33
  const :vars, T::Array[String]
39
34
 
40
- # Additional data
41
-
42
- # Request fields (optional)
43
-
44
35
  # Serialize shared fields
45
36
  include LogStruct::Log::Interfaces::CommonFields
46
37
  include LogStruct::Log::Shared::SerializeCommon
47
38
 
48
39
  sig { returns(T::Hash[LogStruct::LogField, T.untyped]) }
49
- def self.base_hash
50
- {}
51
- end
52
-
53
- sig {
54
- params(vars: T.untyped,
55
- additional_data: T.untyped,
56
- timestamp: T.untyped).returns(T::Hash[LogStruct::LogField, T.untyped])
57
- }
58
- def self.build(vars:,
59
- additional_data: nil,
60
- timestamp: Time.now)
61
- h = base_hash
40
+ def to_h
41
+ h = T.let({}, T::Hash[LogStruct::LogField, T.untyped])
62
42
  h[LogField::Vars] = vars
63
43
  h
64
44
  end
65
-
66
- sig { returns(T::Hash[LogStruct::LogField, T.untyped]) }
67
- def to_h
68
- self.class.build(
69
- vars: vars,
70
- timestamp: timestamp
71
- )
72
- end
73
45
  end
74
46
  end
75
47
  end
@@ -9,9 +9,9 @@
9
9
  require "log_struct/shared/interfaces/common_fields"
10
10
  require "log_struct/shared/interfaces/additional_data_field"
11
11
  require "log_struct/shared/interfaces/request_fields"
12
- require "log_struct/shared/shared/serialize_common"
13
- require "log_struct/shared/shared/merge_additional_data_fields"
14
- require "log_struct/shared/shared/add_request_fields"
12
+ require "log_struct/shared/serialize_common"
13
+ require "log_struct/shared/merge_additional_data_fields"
14
+ require "log_struct/shared/add_request_fields"
15
15
  require_relative "../enums/source"
16
16
  require_relative "../enums/event"
17
17
  require_relative "../enums/level"
@@ -20,11 +20,6 @@ require_relative "../enums/log_field"
20
20
  module LogStruct
21
21
  module Log
22
22
  class Error < T::Struct
23
- # typed: strict
24
- # frozen_string_literal: true
25
-
26
- extend T::Sig
27
-
28
23
  extend T::Sig
29
24
 
30
25
  # Shared/common fields
@@ -34,7 +29,7 @@ module LogStruct
34
29
  const :level, Level, default: Level::Info
35
30
 
36
31
  # Event-specific fields
37
- const :err_class, T.class_of(StandardError)
32
+ const :error_class, T.class_of(StandardError)
38
33
  const :message, String
39
34
  const :backtrace, T.nilable(T::Array[String]), default: nil
40
35
 
@@ -43,46 +38,18 @@ module LogStruct
43
38
  const :additional_data, T.nilable(T::Hash[T.any(String, Symbol), T.untyped]), default: nil
44
39
  include LogStruct::Log::Shared::MergeAdditionalDataFields
45
40
 
46
- # Request fields (optional)
47
-
48
41
  # Serialize shared fields
49
42
  include LogStruct::Log::Interfaces::CommonFields
50
43
  include LogStruct::Log::Shared::SerializeCommon
51
44
 
52
45
  sig { returns(T::Hash[LogStruct::LogField, T.untyped]) }
53
- def self.base_hash
54
- {}
55
- end
56
-
57
- sig {
58
- params(err_class: T.untyped,
59
- message: T.untyped,
60
- backtrace: T.untyped,
61
- additional_data: T.untyped,
62
- timestamp: T.untyped).returns(T::Hash[LogStruct::LogField, T.untyped])
63
- }
64
- def self.build(err_class:,
65
- message:,
66
- backtrace: nil,
67
- additional_data: nil,
68
- timestamp: Time.now)
69
- h = base_hash
70
- h[LogField::ErrClass] = err_class
46
+ def to_h
47
+ h = T.let({}, T::Hash[LogStruct::LogField, T.untyped])
48
+ h[LogField::ErrorClass] = error_class
71
49
  h[LogField::Message] = message
72
50
  h[LogField::Backtrace] = backtrace unless backtrace.nil?
73
51
  h
74
52
  end
75
-
76
- sig { returns(T::Hash[LogStruct::LogField, T.untyped]) }
77
- def to_h
78
- self.class.build(
79
- err_class: err_class,
80
- message: message,
81
- backtrace: backtrace,
82
- additional_data: additional_data,
83
- timestamp: timestamp
84
- )
85
- end
86
53
  end
87
54
  end
88
55
  end
@@ -9,9 +9,9 @@
9
9
  require "log_struct/shared/interfaces/common_fields"
10
10
  require "log_struct/shared/interfaces/additional_data_field"
11
11
  require "log_struct/shared/interfaces/request_fields"
12
- require "log_struct/shared/shared/serialize_common"
13
- require "log_struct/shared/shared/merge_additional_data_fields"
14
- require "log_struct/shared/shared/add_request_fields"
12
+ require "log_struct/shared/serialize_common"
13
+ require "log_struct/shared/merge_additional_data_fields"
14
+ require "log_struct/shared/add_request_fields"
15
15
  require_relative "../../enums/source"
16
16
  require_relative "../../enums/event"
17
17
  require_relative "../../enums/level"
@@ -21,11 +21,6 @@ module LogStruct
21
21
  module Log
22
22
  class GoodJob
23
23
  class Enqueue < T::Struct
24
- # typed: strict
25
- # frozen_string_literal: true
26
-
27
- extend T::Sig
28
-
29
24
  extend T::Sig
30
25
 
31
26
  # Shared/common fields
@@ -36,90 +31,32 @@ module LogStruct
36
31
 
37
32
  const :job_id, T.nilable(String), default: nil
38
33
  const :job_class, T.nilable(String), default: nil
39
- const :queue_name, T.nilable(String), default: nil
34
+ const :queue_name, T.nilable(Symbol), default: nil
40
35
  const :arguments, T.nilable(T::Array[T.untyped]), default: nil
41
36
  const :executions, T.nilable(Integer), default: nil
42
37
 
43
38
  # Event-specific fields
44
39
  const :duration_ms, Float
45
40
  const :scheduled_at, T.nilable(Time), default: nil
46
-
47
- # Additional data
48
- include LogStruct::Log::Interfaces::AdditionalDataField
49
- const :additional_data, T.nilable(T::Hash[T.any(String, Symbol), T.untyped]), default: nil
50
- include LogStruct::Log::Shared::MergeAdditionalDataFields
51
-
52
- # Request fields (optional)
41
+ const :enqueue_caller, T.nilable(String), default: nil
53
42
 
54
43
  # Serialize shared fields
55
44
  include LogStruct::Log::Interfaces::CommonFields
56
45
  include LogStruct::Log::Shared::SerializeCommon
57
46
 
58
- sig {
59
- params(job_id: T.untyped,
60
- job_class: T.untyped,
61
- queue_name: T.untyped,
62
- arguments: T.untyped,
63
- executions: T.untyped).returns(T::Hash[LogStruct::LogField, T.untyped])
64
- }
65
- def self.base_hash(job_id: nil,
66
- job_class: nil,
67
- queue_name: nil,
68
- arguments: nil,
69
- executions: nil)
70
- h = {}
47
+ sig { returns(T::Hash[LogStruct::LogField, T.untyped]) }
48
+ def to_h
49
+ h = T.let({}, T::Hash[LogStruct::LogField, T.untyped])
71
50
  h[LogField::JobId] = job_id unless job_id.nil?
72
51
  h[LogField::JobClass] = job_class unless job_class.nil?
73
52
  h[LogField::QueueName] = queue_name unless queue_name.nil?
74
53
  h[LogField::Arguments] = arguments unless arguments.nil?
75
54
  h[LogField::Executions] = executions unless executions.nil?
76
- h
77
- end
78
-
79
- sig {
80
- params(duration_ms: T.untyped,
81
- job_id: T.untyped,
82
- job_class: T.untyped,
83
- queue_name: T.untyped,
84
- arguments: T.untyped,
85
- executions: T.untyped,
86
- scheduled_at: T.untyped,
87
- additional_data: T.untyped,
88
- timestamp: T.untyped).returns(T::Hash[LogStruct::LogField, T.untyped])
89
- }
90
- def self.build(duration_ms:,
91
- job_id: nil,
92
- job_class: nil,
93
- queue_name: nil,
94
- arguments: nil,
95
- executions: nil,
96
- scheduled_at: nil,
97
- additional_data: nil,
98
- timestamp: Time.now)
99
- h = base_hash(job_id: job_id,
100
- job_class: job_class,
101
- queue_name: queue_name,
102
- arguments: arguments,
103
- executions: executions)
104
55
  h[LogField::DurationMs] = duration_ms
105
56
  h[LogField::ScheduledAt] = scheduled_at unless scheduled_at.nil?
57
+ h[LogField::EnqueueCaller] = enqueue_caller unless enqueue_caller.nil?
106
58
  h
107
59
  end
108
-
109
- sig { returns(T::Hash[LogStruct::LogField, T.untyped]) }
110
- def to_h
111
- self.class.build(
112
- job_id: job_id,
113
- job_class: job_class,
114
- queue_name: queue_name,
115
- arguments: arguments,
116
- executions: executions,
117
- duration_ms: duration_ms,
118
- scheduled_at: scheduled_at,
119
- additional_data: additional_data,
120
- timestamp: timestamp
121
- )
122
- end
123
60
  end
124
61
  end
125
62
  end
@@ -9,9 +9,9 @@
9
9
  require "log_struct/shared/interfaces/common_fields"
10
10
  require "log_struct/shared/interfaces/additional_data_field"
11
11
  require "log_struct/shared/interfaces/request_fields"
12
- require "log_struct/shared/shared/serialize_common"
13
- require "log_struct/shared/shared/merge_additional_data_fields"
14
- require "log_struct/shared/shared/add_request_fields"
12
+ require "log_struct/shared/serialize_common"
13
+ require "log_struct/shared/merge_additional_data_fields"
14
+ require "log_struct/shared/add_request_fields"
15
15
  require_relative "../../enums/source"
16
16
  require_relative "../../enums/event"
17
17
  require_relative "../../enums/level"
@@ -21,11 +21,6 @@ module LogStruct
21
21
  module Log
22
22
  class GoodJob
23
23
  class Error < T::Struct
24
- # typed: strict
25
- # frozen_string_literal: true
26
-
27
- extend T::Sig
28
-
29
24
  extend T::Sig
30
25
 
31
26
  # Shared/common fields
@@ -36,12 +31,12 @@ module LogStruct
36
31
 
37
32
  const :job_id, T.nilable(String), default: nil
38
33
  const :job_class, T.nilable(String), default: nil
39
- const :queue_name, T.nilable(String), default: nil
34
+ const :queue_name, T.nilable(Symbol), default: nil
40
35
  const :arguments, T.nilable(T::Array[T.untyped]), default: nil
41
36
  const :executions, T.nilable(Integer), default: nil
42
37
 
43
38
  # Event-specific fields
44
- const :err_class, String
39
+ const :error_class, String
45
40
  const :error_message, String
46
41
  const :duration_ms, T.nilable(Float), default: nil
47
42
  const :process_id, Integer
@@ -49,74 +44,19 @@ module LogStruct
49
44
  const :exception_executions, T.nilable(Integer), default: nil
50
45
  const :backtrace, T.nilable(T::Array[String]), default: nil
51
46
 
52
- # Additional data
53
- include LogStruct::Log::Interfaces::AdditionalDataField
54
- const :additional_data, T.nilable(T::Hash[T.any(String, Symbol), T.untyped]), default: nil
55
- include LogStruct::Log::Shared::MergeAdditionalDataFields
56
-
57
- # Request fields (optional)
58
-
59
47
  # Serialize shared fields
60
48
  include LogStruct::Log::Interfaces::CommonFields
61
49
  include LogStruct::Log::Shared::SerializeCommon
62
50
 
63
- sig {
64
- params(job_id: T.untyped,
65
- job_class: T.untyped,
66
- queue_name: T.untyped,
67
- arguments: T.untyped,
68
- executions: T.untyped).returns(T::Hash[LogStruct::LogField, T.untyped])
69
- }
70
- def self.base_hash(job_id: nil,
71
- job_class: nil,
72
- queue_name: nil,
73
- arguments: nil,
74
- executions: nil)
75
- h = {}
51
+ sig { returns(T::Hash[LogStruct::LogField, T.untyped]) }
52
+ def to_h
53
+ h = T.let({}, T::Hash[LogStruct::LogField, T.untyped])
76
54
  h[LogField::JobId] = job_id unless job_id.nil?
77
55
  h[LogField::JobClass] = job_class unless job_class.nil?
78
56
  h[LogField::QueueName] = queue_name unless queue_name.nil?
79
57
  h[LogField::Arguments] = arguments unless arguments.nil?
80
58
  h[LogField::Executions] = executions unless executions.nil?
81
- h
82
- end
83
-
84
- sig {
85
- params(err_class: T.untyped,
86
- error_message: T.untyped,
87
- process_id: T.untyped,
88
- thread_id: T.untyped,
89
- job_id: T.untyped,
90
- job_class: T.untyped,
91
- queue_name: T.untyped,
92
- arguments: T.untyped,
93
- executions: T.untyped,
94
- duration_ms: T.untyped,
95
- exception_executions: T.untyped,
96
- backtrace: T.untyped,
97
- additional_data: T.untyped,
98
- timestamp: T.untyped).returns(T::Hash[LogStruct::LogField, T.untyped])
99
- }
100
- def self.build(err_class:,
101
- error_message:,
102
- process_id:,
103
- thread_id:,
104
- job_id: nil,
105
- job_class: nil,
106
- queue_name: nil,
107
- arguments: nil,
108
- executions: nil,
109
- duration_ms: nil,
110
- exception_executions: nil,
111
- backtrace: nil,
112
- additional_data: nil,
113
- timestamp: Time.now)
114
- h = base_hash(job_id: job_id,
115
- job_class: job_class,
116
- queue_name: queue_name,
117
- arguments: arguments,
118
- executions: executions)
119
- h[LogField::ErrClass] = err_class
59
+ h[LogField::ErrorClass] = error_class
120
60
  h[LogField::ErrorMessage] = error_message
121
61
  h[LogField::DurationMs] = duration_ms unless duration_ms.nil?
122
62
  h[LogField::ProcessId] = process_id
@@ -125,26 +65,6 @@ module LogStruct
125
65
  h[LogField::Backtrace] = backtrace unless backtrace.nil?
126
66
  h
127
67
  end
128
-
129
- sig { returns(T::Hash[LogStruct::LogField, T.untyped]) }
130
- def to_h
131
- self.class.build(
132
- job_id: job_id,
133
- job_class: job_class,
134
- queue_name: queue_name,
135
- arguments: arguments,
136
- executions: executions,
137
- err_class: err_class,
138
- error_message: error_message,
139
- duration_ms: duration_ms,
140
- process_id: process_id,
141
- thread_id: thread_id,
142
- exception_executions: exception_executions,
143
- backtrace: backtrace,
144
- additional_data: additional_data,
145
- timestamp: timestamp
146
- )
147
- end
148
68
  end
149
69
  end
150
70
  end
@@ -9,9 +9,9 @@
9
9
  require "log_struct/shared/interfaces/common_fields"
10
10
  require "log_struct/shared/interfaces/additional_data_field"
11
11
  require "log_struct/shared/interfaces/request_fields"
12
- require "log_struct/shared/shared/serialize_common"
13
- require "log_struct/shared/shared/merge_additional_data_fields"
14
- require "log_struct/shared/shared/add_request_fields"
12
+ require "log_struct/shared/serialize_common"
13
+ require "log_struct/shared/merge_additional_data_fields"
14
+ require "log_struct/shared/add_request_fields"
15
15
  require_relative "../../enums/source"
16
16
  require_relative "../../enums/event"
17
17
  require_relative "../../enums/level"
@@ -21,11 +21,6 @@ module LogStruct
21
21
  module Log
22
22
  class GoodJob
23
23
  class Finish < T::Struct
24
- # typed: strict
25
- # frozen_string_literal: true
26
-
27
- extend T::Sig
28
-
29
24
  extend T::Sig
30
25
 
31
26
  # Shared/common fields
@@ -36,7 +31,7 @@ module LogStruct
36
31
 
37
32
  const :job_id, T.nilable(String), default: nil
38
33
  const :job_class, T.nilable(String), default: nil
39
- const :queue_name, T.nilable(String), default: nil
34
+ const :queue_name, T.nilable(Symbol), default: nil
40
35
  const :arguments, T.nilable(T::Array[T.untyped]), default: nil
41
36
  const :executions, T.nilable(Integer), default: nil
42
37
 
@@ -45,91 +40,27 @@ module LogStruct
45
40
  const :finished_at, Time
46
41
  const :process_id, Integer
47
42
  const :thread_id, String
48
-
49
- # Additional data
50
- include LogStruct::Log::Interfaces::AdditionalDataField
51
- const :additional_data, T.nilable(T::Hash[T.any(String, Symbol), T.untyped]), default: nil
52
- include LogStruct::Log::Shared::MergeAdditionalDataFields
53
-
54
- # Request fields (optional)
43
+ const :result, T.nilable(String), default: nil
55
44
 
56
45
  # Serialize shared fields
57
46
  include LogStruct::Log::Interfaces::CommonFields
58
47
  include LogStruct::Log::Shared::SerializeCommon
59
48
 
60
- sig {
61
- params(job_id: T.untyped,
62
- job_class: T.untyped,
63
- queue_name: T.untyped,
64
- arguments: T.untyped,
65
- executions: T.untyped).returns(T::Hash[LogStruct::LogField, T.untyped])
66
- }
67
- def self.base_hash(job_id: nil,
68
- job_class: nil,
69
- queue_name: nil,
70
- arguments: nil,
71
- executions: nil)
72
- h = {}
49
+ sig { returns(T::Hash[LogStruct::LogField, T.untyped]) }
50
+ def to_h
51
+ h = T.let({}, T::Hash[LogStruct::LogField, T.untyped])
73
52
  h[LogField::JobId] = job_id unless job_id.nil?
74
53
  h[LogField::JobClass] = job_class unless job_class.nil?
75
54
  h[LogField::QueueName] = queue_name unless queue_name.nil?
76
55
  h[LogField::Arguments] = arguments unless arguments.nil?
77
56
  h[LogField::Executions] = executions unless executions.nil?
78
- h
79
- end
80
-
81
- sig {
82
- params(duration_ms: T.untyped,
83
- finished_at: T.untyped,
84
- process_id: T.untyped,
85
- thread_id: T.untyped,
86
- job_id: T.untyped,
87
- job_class: T.untyped,
88
- queue_name: T.untyped,
89
- arguments: T.untyped,
90
- executions: T.untyped,
91
- additional_data: T.untyped,
92
- timestamp: T.untyped).returns(T::Hash[LogStruct::LogField, T.untyped])
93
- }
94
- def self.build(duration_ms:,
95
- finished_at:,
96
- process_id:,
97
- thread_id:,
98
- job_id: nil,
99
- job_class: nil,
100
- queue_name: nil,
101
- arguments: nil,
102
- executions: nil,
103
- additional_data: nil,
104
- timestamp: Time.now)
105
- h = base_hash(job_id: job_id,
106
- job_class: job_class,
107
- queue_name: queue_name,
108
- arguments: arguments,
109
- executions: executions)
110
57
  h[LogField::DurationMs] = duration_ms
111
58
  h[LogField::FinishedAt] = finished_at
112
59
  h[LogField::ProcessId] = process_id
113
60
  h[LogField::ThreadId] = thread_id
61
+ h[LogField::Result] = result unless result.nil?
114
62
  h
115
63
  end
116
-
117
- sig { returns(T::Hash[LogStruct::LogField, T.untyped]) }
118
- def to_h
119
- self.class.build(
120
- job_id: job_id,
121
- job_class: job_class,
122
- queue_name: queue_name,
123
- arguments: arguments,
124
- executions: executions,
125
- duration_ms: duration_ms,
126
- finished_at: finished_at,
127
- process_id: process_id,
128
- thread_id: thread_id,
129
- additional_data: additional_data,
130
- timestamp: timestamp
131
- )
132
- end
133
64
  end
134
65
  end
135
66
  end
@@ -9,9 +9,9 @@
9
9
  require "log_struct/shared/interfaces/common_fields"
10
10
  require "log_struct/shared/interfaces/additional_data_field"
11
11
  require "log_struct/shared/interfaces/request_fields"
12
- require "log_struct/shared/shared/serialize_common"
13
- require "log_struct/shared/shared/merge_additional_data_fields"
14
- require "log_struct/shared/shared/add_request_fields"
12
+ require "log_struct/shared/serialize_common"
13
+ require "log_struct/shared/merge_additional_data_fields"
14
+ require "log_struct/shared/add_request_fields"
15
15
  require_relative "../../enums/source"
16
16
  require_relative "../../enums/event"
17
17
  require_relative "../../enums/level"
@@ -21,11 +21,6 @@ module LogStruct
21
21
  module Log
22
22
  class GoodJob
23
23
  class Log < T::Struct
24
- # typed: strict
25
- # frozen_string_literal: true
26
-
27
- extend T::Sig
28
-
29
24
  extend T::Sig
30
25
 
31
26
  # Shared/common fields
@@ -36,7 +31,7 @@ module LogStruct
36
31
 
37
32
  const :job_id, T.nilable(String), default: nil
38
33
  const :job_class, T.nilable(String), default: nil
39
- const :queue_name, T.nilable(String), default: nil
34
+ const :queue_name, T.nilable(Symbol), default: nil
40
35
  const :arguments, T.nilable(T::Array[T.untyped]), default: nil
41
36
  const :executions, T.nilable(Integer), default: nil
42
37
 
@@ -44,87 +39,28 @@ module LogStruct
44
39
  const :message, String
45
40
  const :process_id, Integer
46
41
  const :thread_id, String
47
-
48
- # Additional data
49
- include LogStruct::Log::Interfaces::AdditionalDataField
50
- const :additional_data, T.nilable(T::Hash[T.any(String, Symbol), T.untyped]), default: nil
51
- include LogStruct::Log::Shared::MergeAdditionalDataFields
52
-
53
- # Request fields (optional)
42
+ const :scheduled_at, T.nilable(Time), default: nil
43
+ const :priority, T.nilable(Integer), default: nil
54
44
 
55
45
  # Serialize shared fields
56
46
  include LogStruct::Log::Interfaces::CommonFields
57
47
  include LogStruct::Log::Shared::SerializeCommon
58
48
 
59
- sig {
60
- params(job_id: T.untyped,
61
- job_class: T.untyped,
62
- queue_name: T.untyped,
63
- arguments: T.untyped,
64
- executions: T.untyped).returns(T::Hash[LogStruct::LogField, T.untyped])
65
- }
66
- def self.base_hash(job_id: nil,
67
- job_class: nil,
68
- queue_name: nil,
69
- arguments: nil,
70
- executions: nil)
71
- h = {}
49
+ sig { returns(T::Hash[LogStruct::LogField, T.untyped]) }
50
+ def to_h
51
+ h = T.let({}, T::Hash[LogStruct::LogField, T.untyped])
72
52
  h[LogField::JobId] = job_id unless job_id.nil?
73
53
  h[LogField::JobClass] = job_class unless job_class.nil?
74
54
  h[LogField::QueueName] = queue_name unless queue_name.nil?
75
55
  h[LogField::Arguments] = arguments unless arguments.nil?
76
56
  h[LogField::Executions] = executions unless executions.nil?
77
- h
78
- end
79
-
80
- sig {
81
- params(message: T.untyped,
82
- process_id: T.untyped,
83
- thread_id: T.untyped,
84
- job_id: T.untyped,
85
- job_class: T.untyped,
86
- queue_name: T.untyped,
87
- arguments: T.untyped,
88
- executions: T.untyped,
89
- additional_data: T.untyped,
90
- timestamp: T.untyped).returns(T::Hash[LogStruct::LogField, T.untyped])
91
- }
92
- def self.build(message:,
93
- process_id:,
94
- thread_id:,
95
- job_id: nil,
96
- job_class: nil,
97
- queue_name: nil,
98
- arguments: nil,
99
- executions: nil,
100
- additional_data: nil,
101
- timestamp: Time.now)
102
- h = base_hash(job_id: job_id,
103
- job_class: job_class,
104
- queue_name: queue_name,
105
- arguments: arguments,
106
- executions: executions)
107
57
  h[LogField::Message] = message
108
58
  h[LogField::ProcessId] = process_id
109
59
  h[LogField::ThreadId] = thread_id
60
+ h[LogField::ScheduledAt] = scheduled_at unless scheduled_at.nil?
61
+ h[LogField::Priority] = priority unless priority.nil?
110
62
  h
111
63
  end
112
-
113
- sig { returns(T::Hash[LogStruct::LogField, T.untyped]) }
114
- def to_h
115
- self.class.build(
116
- job_id: job_id,
117
- job_class: job_class,
118
- queue_name: queue_name,
119
- arguments: arguments,
120
- executions: executions,
121
- message: message,
122
- process_id: process_id,
123
- thread_id: thread_id,
124
- additional_data: additional_data,
125
- timestamp: timestamp
126
- )
127
- end
128
64
  end
129
65
  end
130
66
  end