logstruct 0.1.11 → 0.2.0

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 (92) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +146 -1
  3. data/README.md +76 -68
  4. data/lib/log_struct/concerns/configuration.rb +139 -91
  5. data/lib/log_struct/concerns/error_handling.rb +36 -6
  6. data/lib/log_struct/config_struct/error_handling_modes.rb +3 -1
  7. data/lib/log_struct/config_struct/filters.rb +126 -22
  8. data/lib/log_struct/config_struct/integrations.rb +0 -4
  9. data/lib/log_struct/config_struct/limits.rb +29 -0
  10. data/lib/log_struct/configuration.rb +2 -0
  11. data/lib/log_struct/enums/event.rb +3 -1
  12. data/lib/log_struct/enums/log_field.rb +5 -0
  13. data/lib/log_struct/formatter.rb +304 -56
  14. data/lib/log_struct/hash_utils.rb +33 -4
  15. data/lib/log_struct/integrations/action_mailer/error_handling.rb +78 -20
  16. data/lib/log_struct/integrations/action_mailer/fallback_error_handlers.rb +81 -0
  17. data/lib/log_struct/integrations/action_mailer/metadata_collection.rb +0 -20
  18. data/lib/log_struct/integrations/action_mailer.rb +22 -17
  19. data/lib/log_struct/integrations/active_job/log_subscriber.rb +177 -25
  20. data/lib/log_struct/integrations/active_job.rb +2 -7
  21. data/lib/log_struct/integrations/active_model_serializers.rb +9 -3
  22. data/lib/log_struct/integrations/active_record.rb +45 -17
  23. data/lib/log_struct/integrations/active_storage.rb +31 -31
  24. data/lib/log_struct/integrations/ahoy.rb +19 -15
  25. data/lib/log_struct/integrations/carrierwave.rb +55 -51
  26. data/lib/log_struct/integrations/dotenv.rb +22 -32
  27. data/lib/log_struct/integrations/good_job/logger.rb +30 -24
  28. data/lib/log_struct/integrations/good_job.rb +111 -40
  29. data/lib/log_struct/integrations/host_authorization.rb +47 -36
  30. data/lib/log_struct/integrations/lograge.rb +39 -4
  31. data/lib/log_struct/integrations/puma.rb +74 -34
  32. data/lib/log_struct/integrations/rack_error_handler/debug_exceptions_logging.rb +35 -0
  33. data/lib/log_struct/integrations/rack_error_handler/error_lines.rb +160 -0
  34. data/lib/log_struct/integrations/rack_error_handler/middleware.rb +14 -169
  35. data/lib/log_struct/integrations/rack_error_handler/parse_error_logging.rb +36 -0
  36. data/lib/log_struct/integrations/rack_error_handler.rb +20 -4
  37. data/lib/log_struct/integrations/rack_middleware.rb +23 -0
  38. data/lib/log_struct/integrations/rails_log_subscribers.rb +32 -0
  39. data/lib/log_struct/integrations/request_context/middleware.rb +4 -9
  40. data/lib/log_struct/integrations/shrine.rb +48 -73
  41. data/lib/log_struct/integrations/sidekiq/job_context_middleware.rb +32 -0
  42. data/lib/log_struct/integrations/sidekiq/logger.rb +17 -9
  43. data/lib/log_struct/integrations/sidekiq.rb +98 -7
  44. data/lib/log_struct/integrations/sorbet.rb +10 -46
  45. data/lib/log_struct/integrations.rb +3 -2
  46. data/lib/log_struct/log/{good_job/enqueue.rb → active_job/discard.rb} +13 -13
  47. data/lib/log_struct/log/active_job/enqueue.rb +0 -4
  48. data/lib/log_struct/log/{good_job/schedule.rb → active_job/error.rb} +15 -15
  49. data/lib/log_struct/log/{good_job/start.rb → active_job/retry.rb} +13 -13
  50. data/lib/log_struct/log/{good_job/finish.rb → active_job/retry_stopped.rb} +13 -17
  51. data/lib/log_struct/log/active_job.rb +4 -0
  52. data/lib/log_struct/log/active_storage/delete.rb +6 -2
  53. data/lib/log_struct/log/active_storage/download.rb +2 -4
  54. data/lib/log_struct/log/active_storage/exist.rb +2 -2
  55. data/lib/log_struct/log/active_storage/metadata.rb +4 -4
  56. data/lib/log_struct/log/active_storage/upload.rb +2 -10
  57. data/lib/log_struct/log/active_storage/url.rb +2 -6
  58. data/lib/log_struct/log/active_storage.rb +2 -3
  59. data/lib/log_struct/log/error.rb +24 -1
  60. data/lib/log_struct/log/good_job.rb +0 -4
  61. data/lib/log_struct/log/puma/error.rb +63 -0
  62. data/lib/log_struct/log/puma.rb +1 -0
  63. data/lib/log_struct/log/security/blocked_host.rb +0 -4
  64. data/lib/log_struct/log/shrine/exist.rb +0 -2
  65. data/lib/log_struct/log/shrine/metadata.rb +2 -4
  66. data/lib/log_struct/log/shrine/upload.rb +4 -0
  67. data/lib/log_struct/log/sidekiq/error.rb +63 -0
  68. data/lib/log_struct/log/{active_storage/stream.rb → sidekiq/log.rb} +17 -11
  69. data/lib/log_struct/log/sidekiq.rb +3 -45
  70. data/lib/log_struct/log.rb +4 -2
  71. data/lib/log_struct/logged_errors.rb +25 -0
  72. data/lib/log_struct/monkey_patches/active_support/tagged_logging/formatter.rb +2 -3
  73. data/lib/log_struct/param_filters.rb +51 -38
  74. data/lib/log_struct/params_errors.rb +78 -0
  75. data/lib/log_struct/rails_boot_banner_silencer.rb +7 -2
  76. data/lib/log_struct/railtie.rb +29 -14
  77. data/lib/log_struct/semantic_logger/color_formatter.rb +60 -53
  78. data/lib/log_struct/semantic_logger/concerns/log_methods.rb +65 -57
  79. data/lib/log_struct/semantic_logger/formatter.rb +79 -57
  80. data/lib/log_struct/semantic_logger/logger.rb +29 -53
  81. data/lib/log_struct/semantic_logger/reopen_after_fork.rb +40 -0
  82. data/lib/log_struct/semantic_logger/setup.rb +115 -112
  83. data/lib/log_struct/shared/merge_additional_data_fields.rb +14 -1
  84. data/lib/log_struct/shared/serialize_common.rb +2 -7
  85. data/lib/log_struct/string_scrubber.rb +229 -20
  86. data/lib/log_struct/version.rb +1 -1
  87. data/lib/log_struct.rb +6 -4
  88. data/logstruct.gemspec +19 -10
  89. metadata +63 -11
  90. data/lib/log_struct/builders/active_job.rb +0 -84
  91. data/lib/log_struct/integrations/good_job/log_subscriber.rb +0 -179
  92. data/lib/log_struct/integrations/rack.rb +0 -31
@@ -19,27 +19,27 @@ require_relative "../../enums/log_field"
19
19
 
20
20
  module LogStruct
21
21
  module Log
22
- class GoodJob
23
- class Start < T::Struct
22
+ class ActiveJob
23
+ class Retry < T::Struct
24
24
  extend T::Sig
25
25
 
26
26
  # Shared/common fields
27
27
  const :source, Source::Job, default: Source::Job
28
- const :event, Event, default: Event::Start
28
+ const :event, Event, default: Event::Retry
29
29
  const :timestamp, Time, factory: -> { Time.now }
30
30
  const :level, Level, default: Level::Info
31
31
 
32
- const :job_id, T.nilable(String), default: nil
33
- const :job_class, T.nilable(String), default: nil
32
+ const :job_id, String
33
+ const :job_class, String
34
34
  const :queue_name, T.nilable(Symbol), default: nil
35
35
  const :arguments, T.nilable(T::Array[T.untyped]), default: nil
36
36
  const :executions, T.nilable(Integer), default: nil
37
+ const :provider_job_id, T.nilable(String), default: nil
37
38
 
38
39
  # Event-specific fields
39
- const :process_id, Integer
40
- const :thread_id, String
40
+ const :error_class, T.nilable(T.class_of(Exception)), default: nil
41
+ const :message, T.nilable(String), default: nil
41
42
  const :wait_ms, T.nilable(Float), default: nil
42
- const :scheduled_at, T.nilable(Time), default: nil
43
43
 
44
44
  # Serialize shared fields
45
45
  include LogStruct::Log::Interfaces::CommonFields
@@ -48,15 +48,15 @@ module LogStruct
48
48
  sig { returns(T::Hash[LogStruct::LogField, T.untyped]) }
49
49
  def to_h
50
50
  h = T.let({}, T::Hash[LogStruct::LogField, T.untyped])
51
- h[LogField::JobId] = job_id unless job_id.nil?
52
- h[LogField::JobClass] = job_class unless job_class.nil?
51
+ h[LogField::JobId] = job_id
52
+ h[LogField::JobClass] = job_class
53
53
  h[LogField::QueueName] = queue_name unless queue_name.nil?
54
54
  h[LogField::Arguments] = arguments unless arguments.nil?
55
55
  h[LogField::Executions] = executions unless executions.nil?
56
- h[LogField::ProcessId] = process_id
57
- h[LogField::ThreadId] = thread_id
56
+ h[LogField::ProviderJobId] = provider_job_id unless provider_job_id.nil?
57
+ h[LogField::ErrorClass] = error_class unless error_class.nil?
58
+ h[LogField::Message] = message unless message.nil?
58
59
  h[LogField::WaitMs] = wait_ms unless wait_ms.nil?
59
- h[LogField::ScheduledAt] = scheduled_at unless scheduled_at.nil?
60
60
  h
61
61
  end
62
62
  end
@@ -19,28 +19,26 @@ require_relative "../../enums/log_field"
19
19
 
20
20
  module LogStruct
21
21
  module Log
22
- class GoodJob
23
- class Finish < T::Struct
22
+ class ActiveJob
23
+ class RetryStopped < T::Struct
24
24
  extend T::Sig
25
25
 
26
26
  # Shared/common fields
27
27
  const :source, Source::Job, default: Source::Job
28
- const :event, Event, default: Event::Finish
28
+ const :event, Event, default: Event::RetryStopped
29
29
  const :timestamp, Time, factory: -> { Time.now }
30
30
  const :level, Level, default: Level::Info
31
31
 
32
- const :job_id, T.nilable(String), default: nil
33
- const :job_class, T.nilable(String), default: nil
32
+ const :job_id, String
33
+ const :job_class, String
34
34
  const :queue_name, T.nilable(Symbol), default: nil
35
35
  const :arguments, T.nilable(T::Array[T.untyped]), default: nil
36
36
  const :executions, T.nilable(Integer), default: nil
37
+ const :provider_job_id, T.nilable(String), default: nil
37
38
 
38
39
  # Event-specific fields
39
- const :duration_ms, Float
40
- const :finished_at, Time
41
- const :process_id, Integer
42
- const :thread_id, String
43
- const :result, T.nilable(String), default: nil
40
+ const :error_class, T.class_of(Exception)
41
+ const :message, String
44
42
 
45
43
  # Serialize shared fields
46
44
  include LogStruct::Log::Interfaces::CommonFields
@@ -49,16 +47,14 @@ module LogStruct
49
47
  sig { returns(T::Hash[LogStruct::LogField, T.untyped]) }
50
48
  def to_h
51
49
  h = T.let({}, T::Hash[LogStruct::LogField, T.untyped])
52
- h[LogField::JobId] = job_id unless job_id.nil?
53
- h[LogField::JobClass] = job_class unless job_class.nil?
50
+ h[LogField::JobId] = job_id
51
+ h[LogField::JobClass] = job_class
54
52
  h[LogField::QueueName] = queue_name unless queue_name.nil?
55
53
  h[LogField::Arguments] = arguments unless arguments.nil?
56
54
  h[LogField::Executions] = executions unless executions.nil?
57
- h[LogField::DurationMs] = duration_ms
58
- h[LogField::FinishedAt] = finished_at
59
- h[LogField::ProcessId] = process_id
60
- h[LogField::ThreadId] = thread_id
61
- h[LogField::Result] = result unless result.nil?
55
+ h[LogField::ProviderJobId] = provider_job_id unless provider_job_id.nil?
56
+ h[LogField::ErrorClass] = error_class
57
+ h[LogField::Message] = message
62
58
  h
63
59
  end
64
60
  end
@@ -10,6 +10,10 @@ require_relative "active_job/enqueue"
10
10
  require_relative "active_job/schedule"
11
11
  require_relative "active_job/start"
12
12
  require_relative "active_job/finish"
13
+ require_relative "active_job/retry"
14
+ require_relative "active_job/retry_stopped"
15
+ require_relative "active_job/discard"
16
+ require_relative "active_job/error"
13
17
 
14
18
  module LogStruct
15
19
  module Log
@@ -30,7 +30,10 @@ module LogStruct
30
30
  const :level, Level, default: Level::Info
31
31
 
32
32
  const :storage, Symbol
33
- const :file_id, String
33
+ const :file_id, T.nilable(String), default: nil
34
+
35
+ # Event-specific fields
36
+ const :prefix, T.nilable(String), default: nil
34
37
 
35
38
  # Serialize shared fields
36
39
  include LogStruct::Log::Interfaces::CommonFields
@@ -40,7 +43,8 @@ module LogStruct
40
43
  def to_h
41
44
  h = T.let({}, T::Hash[LogStruct::LogField, T.untyped])
42
45
  h[LogField::Storage] = storage
43
- h[LogField::FileId] = file_id
46
+ h[LogField::FileId] = file_id unless file_id.nil?
47
+ h[LogField::Prefix] = prefix unless prefix.nil?
44
48
  h
45
49
  end
46
50
  end
@@ -30,10 +30,9 @@ module LogStruct
30
30
  const :level, Level, default: Level::Info
31
31
 
32
32
  const :storage, Symbol
33
- const :file_id, String
33
+ const :file_id, T.nilable(String), default: nil
34
34
 
35
35
  # Event-specific fields
36
- const :filename, T.nilable(String), default: nil
37
36
  const :range, T.nilable(String), default: nil
38
37
  const :duration_ms, T.nilable(Float), default: nil
39
38
 
@@ -45,8 +44,7 @@ module LogStruct
45
44
  def to_h
46
45
  h = T.let({}, T::Hash[LogStruct::LogField, T.untyped])
47
46
  h[LogField::Storage] = storage
48
- h[LogField::FileId] = file_id
49
- h[LogField::Filename] = filename unless filename.nil?
47
+ h[LogField::FileId] = file_id unless file_id.nil?
50
48
  h[LogField::Range] = range unless range.nil?
51
49
  h[LogField::DurationMs] = duration_ms unless duration_ms.nil?
52
50
  h
@@ -30,7 +30,7 @@ module LogStruct
30
30
  const :level, Level, default: Level::Info
31
31
 
32
32
  const :storage, Symbol
33
- const :file_id, String
33
+ const :file_id, T.nilable(String), default: nil
34
34
 
35
35
  # Event-specific fields
36
36
  const :exist, T.nilable(T::Boolean), default: nil
@@ -43,7 +43,7 @@ module LogStruct
43
43
  def to_h
44
44
  h = T.let({}, T::Hash[LogStruct::LogField, T.untyped])
45
45
  h[LogField::Storage] = storage
46
- h[LogField::FileId] = file_id
46
+ h[LogField::FileId] = file_id unless file_id.nil?
47
47
  h[LogField::Exist] = exist unless exist.nil?
48
48
  h
49
49
  end
@@ -30,10 +30,10 @@ module LogStruct
30
30
  const :level, Level, default: Level::Info
31
31
 
32
32
  const :storage, Symbol
33
- const :file_id, String
33
+ const :file_id, T.nilable(String), default: nil
34
34
 
35
35
  # Event-specific fields
36
- const :metadata, T.nilable(T::Hash[String, T.untyped]), default: nil
36
+ const :mime_type, T.nilable(String), default: nil
37
37
 
38
38
  # Serialize shared fields
39
39
  include LogStruct::Log::Interfaces::CommonFields
@@ -43,8 +43,8 @@ module LogStruct
43
43
  def to_h
44
44
  h = T.let({}, T::Hash[LogStruct::LogField, T.untyped])
45
45
  h[LogField::Storage] = storage
46
- h[LogField::FileId] = file_id
47
- h[LogField::Metadata] = metadata unless metadata.nil?
46
+ h[LogField::FileId] = file_id unless file_id.nil?
47
+ h[LogField::MimeType] = mime_type unless mime_type.nil?
48
48
  h
49
49
  end
50
50
  end
@@ -30,13 +30,9 @@ module LogStruct
30
30
  const :level, Level, default: Level::Info
31
31
 
32
32
  const :storage, Symbol
33
- const :file_id, String
33
+ const :file_id, T.nilable(String), default: nil
34
34
 
35
35
  # Event-specific fields
36
- const :filename, T.nilable(String), default: nil
37
- const :mime_type, T.nilable(String), default: nil
38
- const :size, T.nilable(Integer), default: nil
39
- const :metadata, T.nilable(T::Hash[String, T.untyped]), default: nil
40
36
  const :duration_ms, T.nilable(Float), default: nil
41
37
  const :checksum, T.nilable(String), default: nil
42
38
 
@@ -48,11 +44,7 @@ module LogStruct
48
44
  def to_h
49
45
  h = T.let({}, T::Hash[LogStruct::LogField, T.untyped])
50
46
  h[LogField::Storage] = storage
51
- h[LogField::FileId] = file_id
52
- h[LogField::Filename] = filename unless filename.nil?
53
- h[LogField::MimeType] = mime_type unless mime_type.nil?
54
- h[LogField::Size] = size unless size.nil?
55
- h[LogField::Metadata] = metadata unless metadata.nil?
47
+ h[LogField::FileId] = file_id unless file_id.nil?
56
48
  h[LogField::DurationMs] = duration_ms unless duration_ms.nil?
57
49
  h[LogField::Checksum] = checksum unless checksum.nil?
58
50
  h
@@ -30,10 +30,7 @@ module LogStruct
30
30
  const :level, Level, default: Level::Info
31
31
 
32
32
  const :storage, Symbol
33
- const :file_id, String
34
-
35
- # Event-specific fields
36
- const :url, String
33
+ const :file_id, T.nilable(String), default: nil
37
34
 
38
35
  # Serialize shared fields
39
36
  include LogStruct::Log::Interfaces::CommonFields
@@ -43,8 +40,7 @@ module LogStruct
43
40
  def to_h
44
41
  h = T.let({}, T::Hash[LogStruct::LogField, T.untyped])
45
42
  h[LogField::Storage] = storage
46
- h[LogField::FileId] = file_id
47
- h[LogField::Url] = url
43
+ h[LogField::FileId] = file_id unless file_id.nil?
48
44
  h
49
45
  end
50
46
  end
@@ -11,7 +11,6 @@ require_relative "active_storage/download"
11
11
  require_relative "active_storage/delete"
12
12
  require_relative "active_storage/metadata"
13
13
  require_relative "active_storage/exist"
14
- require_relative "active_storage/stream"
15
14
  require_relative "active_storage/url"
16
15
 
17
16
  module LogStruct
@@ -20,12 +19,12 @@ module LogStruct
20
19
  class BaseFields < T::Struct
21
20
  extend T::Sig
22
21
  const :storage, Symbol
23
- const :file_id, String
22
+ const :file_id, T.nilable(String), default: nil
24
23
 
25
24
  Kwargs = T.type_alias do
26
25
  {
27
26
  storage: Symbol,
28
- file_id: String
27
+ file_id: T.nilable(String)
29
28
  }
30
29
  end
31
30
 
@@ -28,26 +28,49 @@ module LogStruct
28
28
  const :timestamp, Time, factory: -> { Time.now }
29
29
  const :level, Level, default: Level::Info
30
30
 
31
+ const :path, T.nilable(String), default: nil
32
+ const :http_method, T.nilable(String), default: nil
33
+ const :source_ip, T.nilable(String), default: nil
34
+ const :user_agent, T.nilable(String), default: nil
35
+ const :referer, T.nilable(String), default: nil
36
+
31
37
  # Event-specific fields
32
- const :error_class, T.class_of(StandardError)
38
+ const :error_class, T.class_of(Exception)
33
39
  const :message, String
40
+ const :error_message, T.nilable(String), default: nil
34
41
  const :backtrace, T.nilable(T::Array[String]), default: nil
42
+ const :status, T.nilable(Integer), default: nil
43
+ const :cause_class, T.nilable(String), default: nil
44
+ const :cause_message, T.nilable(String), default: nil
35
45
 
36
46
  # Additional data
37
47
  include LogStruct::Log::Interfaces::AdditionalDataField
38
48
  const :additional_data, T.nilable(T::Hash[T.any(String, Symbol), T.untyped]), default: nil
39
49
  include LogStruct::Log::Shared::MergeAdditionalDataFields
40
50
 
51
+ # Request fields (optional)
52
+ include LogStruct::Log::Interfaces::RequestFields
53
+
41
54
  # Serialize shared fields
42
55
  include LogStruct::Log::Interfaces::CommonFields
43
56
  include LogStruct::Log::Shared::SerializeCommon
57
+ include LogStruct::Log::Shared::AddRequestFields
44
58
 
45
59
  sig { returns(T::Hash[LogStruct::LogField, T.untyped]) }
46
60
  def to_h
47
61
  h = T.let({}, T::Hash[LogStruct::LogField, T.untyped])
62
+ h[LogField::Path] = path unless path.nil?
63
+ h[LogField::HttpMethod] = http_method unless http_method.nil?
64
+ h[LogField::SourceIp] = source_ip unless source_ip.nil?
65
+ h[LogField::UserAgent] = user_agent unless user_agent.nil?
66
+ h[LogField::Referer] = referer unless referer.nil?
48
67
  h[LogField::ErrorClass] = error_class
49
68
  h[LogField::Message] = message
69
+ h[LogField::ErrorMessage] = error_message unless error_message.nil?
50
70
  h[LogField::Backtrace] = backtrace unless backtrace.nil?
71
+ h[LogField::Status] = status unless status.nil?
72
+ h[LogField::CauseClass] = cause_class unless cause_class.nil?
73
+ h[LogField::CauseMessage] = cause_message unless cause_message.nil?
51
74
  h
52
75
  end
53
76
  end
@@ -7,11 +7,7 @@
7
7
  # Template: tools/codegen/templates/sorbet/source_parent.rb.erb
8
8
 
9
9
  require_relative "good_job/log"
10
- require_relative "good_job/enqueue"
11
- require_relative "good_job/start"
12
- require_relative "good_job/finish"
13
10
  require_relative "good_job/error"
14
- require_relative "good_job/schedule"
15
11
 
16
12
  module LogStruct
17
13
  module Log
@@ -0,0 +1,63 @@
1
+ # typed: strict
2
+ # frozen_string_literal: true
3
+
4
+ # AUTO-GENERATED: DO NOT EDIT
5
+ # Generated by scripts/generate_structs.rb
6
+ # Schemas dir: schemas/log_sources/
7
+ # Template: tools/codegen/templates/sorbet/event.rb.erb
8
+
9
+ require "log_struct/shared/interfaces/common_fields"
10
+ require "log_struct/shared/interfaces/additional_data_field"
11
+ require "log_struct/shared/interfaces/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
+ require_relative "../../enums/source"
16
+ require_relative "../../enums/event"
17
+ require_relative "../../enums/level"
18
+ require_relative "../../enums/log_field"
19
+
20
+ module LogStruct
21
+ module Log
22
+ class Puma
23
+ class Error < T::Struct
24
+ extend T::Sig
25
+
26
+ # Shared/common fields
27
+ const :source, Source::Puma, default: Source::Puma
28
+ const :event, Event, default: Event::Error
29
+ const :timestamp, Time, factory: -> { Time.now }
30
+ const :level, Level, default: Level::Info
31
+
32
+ # Event-specific fields
33
+ const :error_class, T.class_of(Exception)
34
+ const :message, String
35
+ const :backtrace, T.nilable(T::Array[String]), default: nil
36
+ const :error_context, T.nilable(String), default: nil
37
+ const :http_method, T.nilable(String), default: nil
38
+ const :path, T.nilable(String), default: nil
39
+
40
+ # Additional data
41
+ include LogStruct::Log::Interfaces::AdditionalDataField
42
+ const :additional_data, T.nilable(T::Hash[T.any(String, Symbol), T.untyped]), default: nil
43
+ include LogStruct::Log::Shared::MergeAdditionalDataFields
44
+
45
+ # Serialize shared fields
46
+ include LogStruct::Log::Interfaces::CommonFields
47
+ include LogStruct::Log::Shared::SerializeCommon
48
+
49
+ sig { returns(T::Hash[LogStruct::LogField, T.untyped]) }
50
+ def to_h
51
+ h = T.let({}, T::Hash[LogStruct::LogField, T.untyped])
52
+ h[LogField::ErrorClass] = error_class
53
+ h[LogField::Message] = message
54
+ h[LogField::Backtrace] = backtrace unless backtrace.nil?
55
+ h[LogField::ErrorContext] = error_context unless error_context.nil?
56
+ h[LogField::HttpMethod] = http_method unless http_method.nil?
57
+ h[LogField::Path] = path unless path.nil?
58
+ h
59
+ end
60
+ end
61
+ end
62
+ end
63
+ end
@@ -8,3 +8,4 @@
8
8
 
9
9
  require_relative "puma/start"
10
10
  require_relative "puma/shutdown"
11
+ require_relative "puma/error"
@@ -40,8 +40,6 @@ module LogStruct
40
40
  const :blocked_host, T.nilable(String), default: nil
41
41
  const :blocked_hosts, T.nilable(T::Array[String]), default: nil
42
42
  const :x_forwarded_for, T.nilable(String), default: nil
43
- const :allowed_hosts, T.nilable(T::Array[String]), default: nil
44
- const :allow_ip_hosts, T.nilable(T::Boolean), default: nil
45
43
 
46
44
  # Additional data
47
45
  include LogStruct::Log::Interfaces::AdditionalDataField
@@ -68,8 +66,6 @@ module LogStruct
68
66
  h[LogField::BlockedHost] = blocked_host unless blocked_host.nil?
69
67
  h[LogField::BlockedHosts] = blocked_hosts unless blocked_hosts.nil?
70
68
  h[LogField::XForwardedFor] = x_forwarded_for unless x_forwarded_for.nil?
71
- h[LogField::AllowedHosts] = allowed_hosts unless allowed_hosts.nil?
72
- h[LogField::AllowIpHosts] = allow_ip_hosts unless allow_ip_hosts.nil?
73
69
  h
74
70
  end
75
71
  end
@@ -32,7 +32,6 @@ module LogStruct
32
32
  # Event-specific fields
33
33
  const :storage, Symbol
34
34
  const :location, String
35
- const :exist, T.nilable(T::Boolean), default: nil
36
35
 
37
36
  # Serialize shared fields
38
37
  include LogStruct::Log::Interfaces::CommonFields
@@ -43,7 +42,6 @@ module LogStruct
43
42
  h = T.let({}, T::Hash[LogStruct::LogField, T.untyped])
44
43
  h[LogField::Storage] = storage
45
44
  h[LogField::Location] = location
46
- h[LogField::Exist] = exist unless exist.nil?
47
45
  h
48
46
  end
49
47
  end
@@ -31,8 +31,7 @@ module LogStruct
31
31
 
32
32
  # Event-specific fields
33
33
  const :storage, Symbol
34
- const :location, T.nilable(String), default: nil
35
- const :metadata, T.nilable(T::Hash[String, T.untyped]), default: nil
34
+ const :duration_ms, T.nilable(Float), default: nil
36
35
 
37
36
  # Serialize shared fields
38
37
  include LogStruct::Log::Interfaces::CommonFields
@@ -42,8 +41,7 @@ module LogStruct
42
41
  def to_h
43
42
  h = T.let({}, T::Hash[LogStruct::LogField, T.untyped])
44
43
  h[LogField::Storage] = storage
45
- h[LogField::Location] = location unless location.nil?
46
- h[LogField::Metadata] = metadata unless metadata.nil?
44
+ h[LogField::DurationMs] = duration_ms unless duration_ms.nil?
47
45
  h
48
46
  end
49
47
  end
@@ -32,6 +32,8 @@ module LogStruct
32
32
  # Event-specific fields
33
33
  const :storage, Symbol
34
34
  const :location, String
35
+ const :mime_type, T.nilable(String), default: nil
36
+ const :size, T.nilable(Integer), default: nil
35
37
  const :upload_options, T.nilable(T::Hash[Symbol, T.untyped]), default: nil
36
38
  const :options, T.nilable(T::Hash[Symbol, T.untyped]), default: nil
37
39
  const :uploader, T.nilable(String), default: nil
@@ -46,6 +48,8 @@ module LogStruct
46
48
  h = T.let({}, T::Hash[LogStruct::LogField, T.untyped])
47
49
  h[LogField::Storage] = storage
48
50
  h[LogField::Location] = location
51
+ h[LogField::MimeType] = mime_type unless mime_type.nil?
52
+ h[LogField::Size] = size unless size.nil?
49
53
  h[LogField::UploadOptions] = upload_options unless upload_options.nil?
50
54
  h[LogField::Options] = options unless options.nil?
51
55
  h[LogField::Uploader] = uploader unless uploader.nil?
@@ -0,0 +1,63 @@
1
+ # typed: strict
2
+ # frozen_string_literal: true
3
+
4
+ # AUTO-GENERATED: DO NOT EDIT
5
+ # Generated by scripts/generate_structs.rb
6
+ # Schemas dir: schemas/log_sources/
7
+ # Template: tools/codegen/templates/sorbet/event.rb.erb
8
+
9
+ require "log_struct/shared/interfaces/common_fields"
10
+ require "log_struct/shared/interfaces/additional_data_field"
11
+ require "log_struct/shared/interfaces/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
+ require_relative "../../enums/source"
16
+ require_relative "../../enums/event"
17
+ require_relative "../../enums/level"
18
+ require_relative "../../enums/log_field"
19
+
20
+ module LogStruct
21
+ module Log
22
+ class Sidekiq
23
+ class Error < T::Struct
24
+ extend T::Sig
25
+
26
+ # Shared/common fields
27
+ const :source, Source::Sidekiq, default: Source::Sidekiq
28
+ const :event, Event, default: Event::Error
29
+ const :timestamp, Time, factory: -> { Time.now }
30
+ const :level, Level, default: Level::Info
31
+
32
+ # Event-specific fields
33
+ const :error_class, T.class_of(Exception)
34
+ const :message, String
35
+ const :backtrace, T.nilable(T::Array[String]), default: nil
36
+ const :error_context, T.nilable(String), default: nil
37
+ const :queue_name, T.nilable(String), default: nil
38
+ const :retry_count, T.nilable(Integer), default: nil
39
+
40
+ # Additional data
41
+ include LogStruct::Log::Interfaces::AdditionalDataField
42
+ const :additional_data, T.nilable(T::Hash[T.any(String, Symbol), T.untyped]), default: nil
43
+ include LogStruct::Log::Shared::MergeAdditionalDataFields
44
+
45
+ # Serialize shared fields
46
+ include LogStruct::Log::Interfaces::CommonFields
47
+ include LogStruct::Log::Shared::SerializeCommon
48
+
49
+ sig { returns(T::Hash[LogStruct::LogField, T.untyped]) }
50
+ def to_h
51
+ h = T.let({}, T::Hash[LogStruct::LogField, T.untyped])
52
+ h[LogField::ErrorClass] = error_class
53
+ h[LogField::Message] = message
54
+ h[LogField::Backtrace] = backtrace unless backtrace.nil?
55
+ h[LogField::ErrorContext] = error_context unless error_context.nil?
56
+ h[LogField::QueueName] = queue_name unless queue_name.nil?
57
+ h[LogField::RetryCount] = retry_count unless retry_count.nil?
58
+ h
59
+ end
60
+ end
61
+ end
62
+ end
63
+ end
@@ -19,21 +19,26 @@ require_relative "../../enums/log_field"
19
19
 
20
20
  module LogStruct
21
21
  module Log
22
- class ActiveStorage
23
- class Stream < T::Struct
22
+ class Sidekiq
23
+ class Log < T::Struct
24
24
  extend T::Sig
25
25
 
26
26
  # Shared/common fields
27
- const :source, Source::Storage, default: Source::Storage
28
- const :event, Event, default: Event::Stream
27
+ const :source, Source::Sidekiq, default: Source::Sidekiq
28
+ const :event, Event, default: Event::Log
29
29
  const :timestamp, Time, factory: -> { Time.now }
30
30
  const :level, Level, default: Level::Info
31
31
 
32
- const :storage, Symbol
33
- const :file_id, String
34
-
35
32
  # Event-specific fields
36
- const :prefix, T.nilable(String), default: nil
33
+ const :message, T.nilable(String), default: nil
34
+ const :context, T.nilable(T::Hash[Symbol, T.untyped]), default: nil
35
+ const :process_id, T.nilable(Integer), default: nil
36
+ const :thread_id, T.nilable(T.any(Integer, String)), default: nil
37
+
38
+ # Additional data
39
+ include LogStruct::Log::Interfaces::AdditionalDataField
40
+ const :additional_data, T.nilable(T::Hash[T.any(String, Symbol), T.untyped]), default: nil
41
+ include LogStruct::Log::Shared::MergeAdditionalDataFields
37
42
 
38
43
  # Serialize shared fields
39
44
  include LogStruct::Log::Interfaces::CommonFields
@@ -42,9 +47,10 @@ module LogStruct
42
47
  sig { returns(T::Hash[LogStruct::LogField, T.untyped]) }
43
48
  def to_h
44
49
  h = T.let({}, T::Hash[LogStruct::LogField, T.untyped])
45
- h[LogField::Storage] = storage
46
- h[LogField::FileId] = file_id
47
- h[LogField::Prefix] = prefix unless prefix.nil?
50
+ h[LogField::Message] = message unless message.nil?
51
+ h[LogField::Context] = context unless context.nil?
52
+ h[LogField::ProcessId] = process_id unless process_id.nil?
53
+ h[LogField::ThreadId] = thread_id unless thread_id.nil?
48
54
  h
49
55
  end
50
56
  end
@@ -4,49 +4,7 @@
4
4
  # AUTO-GENERATED: DO NOT EDIT
5
5
  # Generated by scripts/generate_structs.rb
6
6
  # Schemas dir: schemas/log_sources/
7
- # Template: tools/codegen/templates/sorbet/event.rb.erb
7
+ # Template: tools/codegen/templates/sorbet/source_parent.rb.erb
8
8
 
9
- require "log_struct/shared/interfaces/common_fields"
10
- require "log_struct/shared/interfaces/additional_data_field"
11
- require "log_struct/shared/interfaces/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
- require_relative "../enums/source"
16
- require_relative "../enums/event"
17
- require_relative "../enums/level"
18
- require_relative "../enums/log_field"
19
-
20
- module LogStruct
21
- module Log
22
- class Sidekiq < T::Struct
23
- extend T::Sig
24
-
25
- # Shared/common fields
26
- const :source, Source::Sidekiq, default: Source::Sidekiq
27
- const :event, Event, default: Event::Log
28
- const :timestamp, Time, factory: -> { Time.now }
29
- const :level, Level, default: Level::Info
30
-
31
- # Event-specific fields
32
- const :message, T.nilable(String), default: nil
33
- const :context, T.nilable(T::Hash[Symbol, T.untyped]), default: nil
34
- const :process_id, T.nilable(Integer), default: nil
35
- const :thread_id, T.nilable(T.any(Integer, String)), default: nil
36
-
37
- # Serialize shared fields
38
- include LogStruct::Log::Interfaces::CommonFields
39
- include LogStruct::Log::Shared::SerializeCommon
40
-
41
- sig { returns(T::Hash[LogStruct::LogField, T.untyped]) }
42
- def to_h
43
- h = T.let({}, T::Hash[LogStruct::LogField, T.untyped])
44
- h[LogField::Message] = message unless message.nil?
45
- h[LogField::Context] = context unless context.nil?
46
- h[LogField::ProcessId] = process_id unless process_id.nil?
47
- h[LogField::ThreadId] = thread_id unless thread_id.nil?
48
- h
49
- end
50
- end
51
- end
52
- end
9
+ require_relative "sidekiq/log"
10
+ require_relative "sidekiq/error"