rails_semantic_logger 4.1.3 → 4.12.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 (32) hide show
  1. checksums.yaml +5 -5
  2. data/README.md +17 -10
  3. data/Rakefile +9 -9
  4. data/lib/rails_semantic_logger/action_controller/log_subscriber.rb +125 -0
  5. data/lib/rails_semantic_logger/action_mailer/log_subscriber.rb +135 -0
  6. data/lib/rails_semantic_logger/action_view/log_subscriber.rb +111 -0
  7. data/lib/rails_semantic_logger/active_job/log_subscriber.rb +126 -0
  8. data/lib/rails_semantic_logger/active_record/log_subscriber.rb +218 -0
  9. data/lib/rails_semantic_logger/delayed_job/plugin.rb +11 -0
  10. data/lib/rails_semantic_logger/engine.rb +189 -194
  11. data/lib/rails_semantic_logger/extensions/action_cable/tagged_logger_proxy.rb +1 -1
  12. data/lib/rails_semantic_logger/extensions/action_controller/live.rb +8 -4
  13. data/lib/rails_semantic_logger/extensions/action_dispatch/debug_exceptions.rb +11 -7
  14. data/lib/rails_semantic_logger/extensions/action_view/streaming_template_renderer.rb +10 -6
  15. data/lib/rails_semantic_logger/extensions/active_job/logging.rb +10 -6
  16. data/lib/rails_semantic_logger/extensions/active_model_serializers/logging.rb +12 -9
  17. data/lib/rails_semantic_logger/extensions/active_support/logger.rb +24 -0
  18. data/lib/rails_semantic_logger/extensions/active_support/tagged_logging.rb +8 -0
  19. data/lib/rails_semantic_logger/extensions/mongoid/config.rb +11 -0
  20. data/lib/rails_semantic_logger/extensions/rack/server.rb +12 -0
  21. data/lib/rails_semantic_logger/extensions/rails/server.rb +9 -5
  22. data/lib/rails_semantic_logger/options.rb +122 -0
  23. data/lib/rails_semantic_logger/rack/logger.rb +100 -0
  24. data/lib/rails_semantic_logger/version.rb +2 -2
  25. data/lib/rails_semantic_logger.rb +58 -3
  26. metadata +46 -24
  27. data/lib/rails_semantic_logger/extensions/action_controller/log_subscriber.rb +0 -107
  28. data/lib/rails_semantic_logger/extensions/action_controller/log_subscriber_processing.rb +0 -28
  29. data/lib/rails_semantic_logger/extensions/action_view/log_subscriber.rb +0 -12
  30. data/lib/rails_semantic_logger/extensions/active_record/log_subscriber.rb +0 -44
  31. data/lib/rails_semantic_logger/extensions/rails/rack/logger.rb +0 -63
  32. data/lib/rails_semantic_logger/extensions/rails/rack/logger_info_as_debug.rb +0 -30
@@ -1,7 +1,11 @@
1
1
  # Log actual exceptions, not a string representation
2
- ActionController::Live
3
- module ActionController::Live
4
- def log_error(exception)
5
- logger.fatal(exception)
2
+ require "action_controller"
3
+
4
+ module ActionController
5
+ module Live
6
+ undef_method :log_error
7
+ def log_error(exception)
8
+ logger.fatal(exception)
9
+ end
6
10
  end
7
11
  end
@@ -1,11 +1,15 @@
1
1
  # Log actual exceptions, not a string representation
2
- ActionDispatch::DebugExceptions
3
- class ActionDispatch::DebugExceptions
4
- private
5
- def log_error(request, wrapper)
6
- ActiveSupport::Deprecation.silence do
7
- ActionController::Base.logger.fatal(wrapper.exception)
2
+ require "action_dispatch"
3
+
4
+ module ActionDispatch
5
+ class DebugExceptions
6
+ private
7
+
8
+ undef_method :log_error
9
+ def log_error(_request, wrapper)
10
+ ActiveSupport::Deprecation.silence do
11
+ ActionController::Base.logger.fatal(wrapper.exception)
12
+ end
8
13
  end
9
14
  end
10
15
  end
11
-
@@ -1,11 +1,15 @@
1
1
  # Log actual exceptions, not a string representation
2
- ActionView::StreamingTemplateRenderer
2
+ require "action_view/renderer/streaming_template_renderer"
3
3
 
4
- class ActionView::StreamingTemplateRenderer
5
- class Body
6
- private
7
- def log_error(exception) #:nodoc:
8
- ActionView::Base.logger.fatal(exception)
4
+ module ActionView
5
+ class StreamingTemplateRenderer
6
+ class Body
7
+ private
8
+
9
+ undef_method :log_error
10
+ def log_error(exception)
11
+ ActionView::Base.logger.fatal(exception)
12
+ end
9
13
  end
10
14
  end
11
15
  end
@@ -1,11 +1,15 @@
1
1
  # Patch ActiveJob logger
2
- require 'active_job/logging'
2
+ require "active_job/logging"
3
3
 
4
- module ActiveJob::Logging
5
- include SemanticLogger::Loggable
4
+ module ActiveJob
5
+ module Logging
6
+ include SemanticLogger::Loggable
6
7
 
7
- private
8
- def tag_logger(*tags, &block)
9
- logger.tagged(*tags, &block)
8
+ private
9
+
10
+ undef_method :tag_logger
11
+ def tag_logger(*tags, &block)
12
+ logger.tagged(*tags, &block)
13
+ end
10
14
  end
11
15
  end
@@ -1,15 +1,18 @@
1
1
  # Patch ActiveModelSerializers logger
2
- require 'active_model_serializers/logging'
2
+ require "active_model_serializers/logging"
3
3
 
4
- module ActiveModelSerializers::Logging
5
- include SemanticLogger::Loggable
4
+ module ActiveModelSerializers
5
+ module Logging
6
+ include SemanticLogger::Loggable
6
7
 
7
- private
8
- def tag_logger(*tags, &block)
9
- logger.tagged(*tags, &block)
8
+ private
9
+
10
+ def tag_logger(*tags, &block)
11
+ logger.tagged(*tags, &block)
12
+ end
10
13
  end
11
- end
12
14
 
13
- class ActiveModelSerializers::SerializableResource
14
- include SemanticLogger::Loggable
15
+ class SerializableResource
16
+ include SemanticLogger::Loggable
17
+ end
15
18
  end
@@ -0,0 +1,24 @@
1
+ require "active_support/logger"
2
+
3
+ module ActiveSupport
4
+ # More hacks to try and stop Rails from being it's own worst enemy.
5
+ class Logger
6
+ class << self
7
+ undef :logger_outputs_to?, :broadcast
8
+ end
9
+
10
+ # Prevent Console from trying to merge loggers
11
+ def self.logger_outputs_to?(*args)
12
+ true
13
+ end
14
+
15
+ # Prevent broadcasting since SemanticLogger already supports multiple loggers
16
+ def self.broadcast(logger)
17
+ Module.new
18
+ end
19
+
20
+ def self.new(*args, **kwargs)
21
+ SemanticLogger[self]
22
+ end
23
+ end
24
+ end
@@ -0,0 +1,8 @@
1
+ module ActiveSupport
2
+ module TaggedLogging
3
+ # Semantic Logger already does tagged logging
4
+ def self.new(logger)
5
+ logger
6
+ end
7
+ end
8
+ end
@@ -0,0 +1,11 @@
1
+ require "mongoid/config"
2
+
3
+ module Mongoid
4
+ module Config
5
+ private
6
+
7
+ # Remove log overrides
8
+ def set_log_levels
9
+ end
10
+ end
11
+ end
@@ -0,0 +1,12 @@
1
+ module RailsSemanticLogger
2
+ module Rack
3
+ module Server
4
+ def daemonize_app
5
+ super
6
+ SemanticLogger.reopen
7
+ end
8
+ end
9
+ end
10
+ end
11
+
12
+ Rack::Server.prepend(RailsSemanticLogger::Rack::Server)
@@ -1,11 +1,15 @@
1
1
  # Patch the Rails::Server log_to_stdout so that it logs via SemanticLogger
2
- Rails::Server
3
- module Rails #:nodoc:
4
- class Server #:nodoc:
5
- private
2
+ require "rails"
6
3
 
4
+ module Rails
5
+ class Server
6
+ private
7
+
8
+ undef_method :log_to_stdout if method_defined?(:log_to_stdout)
7
9
  def log_to_stdout
8
- SemanticLogger.add_appender(io: $stdout, formatter: :color)
10
+ wrapped_app # touch the app so the logger is set up
11
+
12
+ SemanticLogger.add_appender(io: $stdout, formatter: :color) unless SemanticLogger.appenders.console_output?
9
13
  end
10
14
  end
11
15
  end
@@ -0,0 +1,122 @@
1
+ module RailsSemanticLogger
2
+ # Options for controlling Rails Semantic Logger behavior
3
+ #
4
+ # * Convert Action Controller and Active Record text messages to semantic data
5
+ #
6
+ # Rails -- Started -- { :ip => "127.0.0.1", :method => "GET", :path => "/dashboards/inquiry_recent_activity" }
7
+ # UserController -- Completed #index -- { :action => "index", :db_runtime => 54.64, :format => "HTML", :method => "GET", :mongo_runtime => 0.0, :path => "/users", :status => 200, :status_message => "OK", :view_runtime => 709.88 }
8
+ #
9
+ # config.rails_semantic_logger.semantic = true
10
+ #
11
+ # * Change Rack started message to debug so that it does not appear in production
12
+ #
13
+ # config.rails_semantic_logger.started = false
14
+ #
15
+ # * Change Processing message to debug so that it does not appear in production
16
+ #
17
+ # config.rails_semantic_logger.processing = false
18
+ #
19
+ # * Change Action View render log messages to debug so that they do not appear in production
20
+ #
21
+ # ActionView::Base -- Rendered data/search/_user.html.haml (46.7ms)
22
+ #
23
+ # config.rails_semantic_logger.rendered = false
24
+ #
25
+ # * Override the Awesome Print options for logging Hash data as text:
26
+ #
27
+ # Any valid AwesomePrint option for rendering data.
28
+ # The defaults can changed be creating a `~/.aprc` file.
29
+ # See: https://github.com/michaeldv/awesome_print
30
+ #
31
+ # Note: The option :multiline is set to false if not supplied.
32
+ # Note: Has no effect if Awesome Print is not installed.
33
+ #
34
+ # config.rails_semantic_logger.ap_options = {multiline: false}
35
+ #
36
+ # * Whether to automatically add an environment specific log file appender.
37
+ # For Example: 'log/development.log'
38
+ #
39
+ # Note:
40
+ # When Semantic Logger fails to log to an appender it logs the error to an
41
+ # internal logger, which by default writes to STDERR.
42
+ # Example, change the default internal logger to log to stdout:
43
+ # SemanticLogger::Processor.logger = SemanticLogger::Appender::IO.new($stdout, level: :warn)
44
+ #
45
+ # config.rails_semantic_logger.add_file_appender = true
46
+ #
47
+ # * Silence asset logging
48
+ #
49
+ # config.rails_semantic_logger.quiet_assets = false
50
+ #
51
+ # * Disable automatic logging to stderr when running a Rails console.
52
+ #
53
+ # config.rails_semantic_logger.console_logger = false
54
+ #
55
+ # * Override the output format for the primary Rails log file.
56
+ #
57
+ # Valid options:
58
+ # * :default
59
+ # Plain text output with no color.
60
+ # * :color
61
+ # Plain text output with color.
62
+ # * :json
63
+ # JSON output format.
64
+ # * class
65
+ #
66
+ # * Proc
67
+ # A block that will be called to format the output.
68
+ # It is supplied with the `log` entry and should return the formatted data.
69
+ #
70
+ # Note:
71
+ # * `:default` is automatically changed to `:color` if `config.colorize_logging` is `true`.
72
+ #
73
+ # JSON Example, in `application.rb`:
74
+ # config.rails_semantic_logger.format = :json
75
+ #
76
+ # Custom Example, create `app/lib/my_formatter.rb`:
77
+ #
78
+ # # My Custom colorized formatter
79
+ # class MyFormatter < SemanticLogger::Formatters::Color
80
+ # # Return the complete log level name in uppercase
81
+ # def level
82
+ # "#{color}log.level.upcase#{color_map.clear}"
83
+ # end
84
+ # end
85
+ #
86
+ # # In application.rb:
87
+ # config.rails_semantic_logger.format = MyFormatter.new
88
+ #
89
+ #
90
+ # config.rails_semantic_logger.format = :default
91
+ #
92
+ # * Add a filter to the file logger [Regexp|Proc]
93
+ # RegExp: Only include log messages where the class name matches the supplied
94
+ # regular expression. All other messages will be ignored.
95
+ # Proc: Only include log messages where the supplied Proc returns true.
96
+ # The Proc must return true or false.
97
+ #
98
+ # config.rails_semantic_logger.filter = nil
99
+ #
100
+ # * named_tags: *DEPRECATED*
101
+ # Instead, supply a Hash to config.log_tags
102
+ # config.rails_semantic_logger.named_tags = nil
103
+ class Options
104
+ attr_accessor :semantic, :started, :processing, :rendered, :ap_options, :add_file_appender,
105
+ :quiet_assets, :format, :named_tags, :filter, :console_logger
106
+
107
+ # Setup default values
108
+ def initialize
109
+ @semantic = true
110
+ @started = false
111
+ @processing = false
112
+ @rendered = false
113
+ @ap_options = {multiline: false}
114
+ @add_file_appender = true
115
+ @quiet_assets = false
116
+ @format = :default
117
+ @named_tags = nil
118
+ @filter = nil
119
+ @console_logger = true
120
+ end
121
+ end
122
+ end
@@ -0,0 +1,100 @@
1
+ require "active_support/core_ext/time/conversions"
2
+ require "active_support/core_ext/object/blank"
3
+ require "active_support/log_subscriber"
4
+ require "action_dispatch/http/request"
5
+ require "rack/body_proxy"
6
+
7
+ module RailsSemanticLogger
8
+ module Rack
9
+ class Logger < ActiveSupport::LogSubscriber
10
+ class << self
11
+ attr_reader :logger
12
+ attr_accessor :started_request_log_level
13
+ end
14
+
15
+ def initialize(app, taggers = nil)
16
+ @app = app
17
+ @taggers = taggers || []
18
+ end
19
+
20
+ def call(env)
21
+ request = ActionDispatch::Request.new(env)
22
+
23
+ # Check for named tags (Hash)
24
+ if @taggers && !@taggers.empty?
25
+ tags = @taggers.is_a?(Hash) ? compute_named_tags(request) : compute_tags(request)
26
+ logger.tagged(tags) { call_app(request, env) }
27
+ else
28
+ call_app(request, env)
29
+ end
30
+ end
31
+
32
+ private
33
+
34
+ @logger = SemanticLogger["Rack"]
35
+ @started_request_log_level = :debug
36
+
37
+ def call_app(request, env)
38
+ instrumenter = ActiveSupport::Notifications.instrumenter
39
+ instrumenter_state = instrumenter.start "request.action_dispatch", request: request
40
+ instrumenter_finish = -> () {
41
+ instrumenter.finish_with_state(instrumenter_state, "request.action_dispatch", request: request)
42
+ }
43
+
44
+ logger.send(self.class.started_request_log_level) { started_request_message(request) }
45
+ status, headers, body = @app.call(env)
46
+ body = ::Rack::BodyProxy.new(body, &instrumenter_finish)
47
+ [status, headers, body]
48
+ rescue Exception
49
+ instrumenter_finish.call
50
+ raise
51
+ end
52
+
53
+ def started_request_message(request)
54
+ {
55
+ message: "Started",
56
+ payload: {
57
+ method: request.request_method,
58
+ path: request.filtered_path,
59
+ ip: request.remote_ip
60
+ }
61
+ }
62
+ end
63
+
64
+ def compute_tags(request)
65
+ @taggers.collect do |tag|
66
+ case tag
67
+ when Proc
68
+ tag.call(request)
69
+ when Symbol
70
+ request.send(tag)
71
+ else
72
+ tag
73
+ end
74
+ end
75
+ end
76
+
77
+ # Leave out any named tags with a nil value
78
+ def compute_named_tags(request)
79
+ tagged = {}
80
+ @taggers.each_pair do |tag, value|
81
+ resolved =
82
+ case value
83
+ when Proc
84
+ value.call(request)
85
+ when Symbol
86
+ request.send(value)
87
+ else
88
+ value
89
+ end
90
+ tagged[tag] = resolved unless resolved.nil?
91
+ end
92
+ tagged
93
+ end
94
+
95
+ def logger
96
+ self.class.logger
97
+ end
98
+ end
99
+ end
100
+ end
@@ -1,3 +1,3 @@
1
- module RailsSemanticLogger #:nodoc
2
- VERSION = '4.1.3'
1
+ module RailsSemanticLogger
2
+ VERSION = "4.12.0".freeze
3
3
  end
@@ -1,6 +1,61 @@
1
- require 'semantic_logger'
2
- require 'rails_semantic_logger/extensions/rails/server' if defined?(Rails::Server)
3
- require 'rails_semantic_logger/engine'
1
+ require "semantic_logger"
2
+ require "rails_semantic_logger/extensions/rails/server" if defined?(Rails::Server)
3
+ require "rails_semantic_logger/engine"
4
4
 
5
5
  module RailsSemanticLogger
6
+ module ActionController
7
+ autoload :LogSubscriber, "rails_semantic_logger/action_controller/log_subscriber"
8
+ end
9
+ module ActionMailer
10
+ autoload :LogSubscriber, "rails_semantic_logger/action_mailer/log_subscriber"
11
+ end
12
+ module ActionView
13
+ autoload :LogSubscriber, "rails_semantic_logger/action_view/log_subscriber"
14
+ end
15
+ module ActiveJob
16
+ autoload :LogSubscriber, "rails_semantic_logger/active_job/log_subscriber"
17
+ end
18
+ module ActiveRecord
19
+ autoload :LogSubscriber, "rails_semantic_logger/active_record/log_subscriber"
20
+ end
21
+ module Rack
22
+ autoload :Logger, "rails_semantic_logger/rack/logger"
23
+ end
24
+ module DelayedJob
25
+ autoload :Plugin, "rails_semantic_logger/delayed_job/plugin"
26
+ end
27
+
28
+ autoload :Options, "rails_semantic_logger/options"
29
+
30
+ # Swap an existing subscriber with a new one
31
+ def self.swap_subscriber(old_class, new_class, notifier)
32
+ subscribers = ActiveSupport::LogSubscriber.subscribers.select { |s| s.is_a?(old_class) }
33
+ subscribers.each { |subscriber| unattach(subscriber) }
34
+
35
+ new_class.attach_to(notifier)
36
+ end
37
+
38
+ def self.unattach(subscriber)
39
+ subscriber_patterns(subscriber).each do |pattern|
40
+ ActiveSupport::Notifications.notifier.listeners_for(pattern).each do |sub|
41
+ next unless sub.instance_variable_get(:@delegate) == subscriber
42
+
43
+ ActiveSupport::Notifications.unsubscribe(sub)
44
+ end
45
+ end
46
+
47
+ ActiveSupport::LogSubscriber.subscribers.delete(subscriber)
48
+ end
49
+
50
+ def self.subscriber_patterns(subscriber)
51
+ subscriber.patterns.respond_to?(:keys) ?
52
+ subscriber.patterns.keys :
53
+ subscriber.patterns
54
+ end
55
+
56
+ private_class_method :subscriber_patterns, :unattach
6
57
  end
58
+
59
+ require("rails_semantic_logger/extensions/mongoid/config") if defined?(Mongoid)
60
+ require("rails_semantic_logger/extensions/active_support/logger") if defined?(ActiveSupport::Logger)
61
+ require("rails_semantic_logger/extensions/rack/server") if defined?(Rack::Server)
metadata CHANGED
@@ -1,46 +1,59 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: rails_semantic_logger
3
3
  version: !ruby/object:Gem::Version
4
- version: 4.1.3
4
+ version: 4.12.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Reid Morrison
8
- autorequire:
8
+ autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2017-06-16 00:00:00.000000000 Z
11
+ date: 2023-03-27 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
- name: rails
14
+ name: rack
15
15
  requirement: !ruby/object:Gem::Requirement
16
16
  requirements:
17
17
  - - ">="
18
18
  - !ruby/object:Gem::Version
19
- version: '4.0'
19
+ version: '0'
20
20
  type: :runtime
21
21
  prerelease: false
22
22
  version_requirements: !ruby/object:Gem::Requirement
23
23
  requirements:
24
24
  - - ">="
25
25
  - !ruby/object:Gem::Version
26
- version: '4.0'
26
+ version: '0'
27
+ - !ruby/object:Gem::Dependency
28
+ name: railties
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - ">="
32
+ - !ruby/object:Gem::Version
33
+ version: '5.1'
34
+ type: :runtime
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - ">="
39
+ - !ruby/object:Gem::Version
40
+ version: '5.1'
27
41
  - !ruby/object:Gem::Dependency
28
42
  name: semantic_logger
29
43
  requirement: !ruby/object:Gem::Requirement
30
44
  requirements:
31
45
  - - "~>"
32
46
  - !ruby/object:Gem::Version
33
- version: '4.1'
47
+ version: '4.13'
34
48
  type: :runtime
35
49
  prerelease: false
36
50
  version_requirements: !ruby/object:Gem::Requirement
37
51
  requirements:
38
52
  - - "~>"
39
53
  - !ruby/object:Gem::Version
40
- version: '4.1'
41
- description: Replaces the default Rails logger with SemanticLogger
54
+ version: '4.13'
55
+ description:
42
56
  email:
43
- - reidmo@gmail.com
44
57
  executables: []
45
58
  extensions: []
46
59
  extra_rdoc_files: []
@@ -49,26 +62,36 @@ files:
49
62
  - README.md
50
63
  - Rakefile
51
64
  - lib/rails_semantic_logger.rb
65
+ - lib/rails_semantic_logger/action_controller/log_subscriber.rb
66
+ - lib/rails_semantic_logger/action_mailer/log_subscriber.rb
67
+ - lib/rails_semantic_logger/action_view/log_subscriber.rb
68
+ - lib/rails_semantic_logger/active_job/log_subscriber.rb
69
+ - lib/rails_semantic_logger/active_record/log_subscriber.rb
70
+ - lib/rails_semantic_logger/delayed_job/plugin.rb
52
71
  - lib/rails_semantic_logger/engine.rb
53
72
  - lib/rails_semantic_logger/extensions/action_cable/tagged_logger_proxy.rb
54
73
  - lib/rails_semantic_logger/extensions/action_controller/live.rb
55
- - lib/rails_semantic_logger/extensions/action_controller/log_subscriber.rb
56
- - lib/rails_semantic_logger/extensions/action_controller/log_subscriber_processing.rb
57
74
  - lib/rails_semantic_logger/extensions/action_dispatch/debug_exceptions.rb
58
- - lib/rails_semantic_logger/extensions/action_view/log_subscriber.rb
59
75
  - lib/rails_semantic_logger/extensions/action_view/streaming_template_renderer.rb
60
76
  - lib/rails_semantic_logger/extensions/active_job/logging.rb
61
77
  - lib/rails_semantic_logger/extensions/active_model_serializers/logging.rb
62
- - lib/rails_semantic_logger/extensions/active_record/log_subscriber.rb
63
- - lib/rails_semantic_logger/extensions/rails/rack/logger.rb
64
- - lib/rails_semantic_logger/extensions/rails/rack/logger_info_as_debug.rb
78
+ - lib/rails_semantic_logger/extensions/active_support/logger.rb
79
+ - lib/rails_semantic_logger/extensions/active_support/tagged_logging.rb
80
+ - lib/rails_semantic_logger/extensions/mongoid/config.rb
81
+ - lib/rails_semantic_logger/extensions/rack/server.rb
65
82
  - lib/rails_semantic_logger/extensions/rails/server.rb
83
+ - lib/rails_semantic_logger/options.rb
84
+ - lib/rails_semantic_logger/rack/logger.rb
66
85
  - lib/rails_semantic_logger/version.rb
67
- homepage: https://github.com/rocketjob/rails_semantic_logger
86
+ homepage: https://logger.rocketjob.io
68
87
  licenses:
69
88
  - Apache-2.0
70
- metadata: {}
71
- post_install_message:
89
+ metadata:
90
+ bug_tracker_uri: https://github.com/reidmorrison/rails_semantic_logger/issues
91
+ documentation_uri: https://logger.rocketjob.io
92
+ source_code_uri: https://github.com/reidmorrison/rails_semantic_logger/tree/4.12.0
93
+ rubygems_mfa_required: 'true'
94
+ post_install_message:
72
95
  rdoc_options: []
73
96
  require_paths:
74
97
  - lib
@@ -76,16 +99,15 @@ required_ruby_version: !ruby/object:Gem::Requirement
76
99
  requirements:
77
100
  - - ">="
78
101
  - !ruby/object:Gem::Version
79
- version: '2.1'
102
+ version: '2.5'
80
103
  required_rubygems_version: !ruby/object:Gem::Requirement
81
104
  requirements:
82
105
  - - ">="
83
106
  - !ruby/object:Gem::Version
84
107
  version: '0'
85
108
  requirements: []
86
- rubyforge_project:
87
- rubygems_version: 2.6.11
88
- signing_key:
109
+ rubygems_version: 3.4.9
110
+ signing_key:
89
111
  specification_version: 4
90
- summary: Scalable, next generation enterprise logging for Rails
112
+ summary: Feature rich logging framework that replaces the Rails logger.
91
113
  test_files: []