rails_semantic_logger 4.1.3 → 4.12.0

Sign up to get free protection for your applications and to get access to all the features.
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: []