researchable_loggable 1.0.1

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.
checksums.yaml ADDED
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA256:
3
+ metadata.gz: 9b483e9b1dcee65ba39a14ee62c76b0f81a92751ca755072bcae1c45c84954bb
4
+ data.tar.gz: c2de92b359b3d87bda96673eee61d141641a52e5e264f691f453f7800f01bd12
5
+ SHA512:
6
+ metadata.gz: 45d49f54d2b674d2f5e0e23fd659f7b2ae988732e5261a5070c529b4ed959aadc7c47b36a91078bc10d8edaef272a7a73d0abaa610c3b4c41dd01518e4715cc8
7
+ data.tar.gz: 7468411333b7e4d7014c29dc825e23a54902af8a895629b99ab09817cdedab2fddb668ca54108597bea3e494049356dce38df0d66e4dbdc41ee302d07e81dedc
data/.editorconfig ADDED
@@ -0,0 +1,12 @@
1
+ root = true
2
+
3
+ [*]
4
+ charset = utf-8
5
+ end_of_line = lf
6
+ insert_final_newline = true
7
+ trim_trailing_whitespace = true
8
+ indent_style = space
9
+ indent_size = 2
10
+
11
+ [*.md]
12
+ trim_trailing_whitespace = false
data/.rspec ADDED
@@ -0,0 +1,3 @@
1
+ --format documentation
2
+ --color
3
+ --require spec_helper
data/.rubocop.yml ADDED
@@ -0,0 +1,3 @@
1
+ inherit_gem:
2
+ ruboguide:
3
+ - styles/rubocop-rails.yml
data/.ruby-gemset ADDED
@@ -0,0 +1 @@
1
+ loggable
data/.ruby-version ADDED
@@ -0,0 +1 @@
1
+ 3.1.2
data/CHANGELOG.md ADDED
@@ -0,0 +1,13 @@
1
+ ## [1.0.1](https://gitlab.com/researchable/general/gems/loggable/compare/v1.0.0...v1.0.1) (2023-03-08)
2
+
3
+
4
+ ### Bug Fixes
5
+
6
+ * **formatter:** undefined method merge for nil:NilClass ([1e110a0](https://gitlab.com/researchable/general/gems/loggable/commit/1e110a090d0c22ab8738a177d775c1f8146f6f2a))
7
+
8
+ # 1.0.0 (2023-03-08)
9
+
10
+
11
+ ### Features
12
+
13
+ * loggable gem ([fbda454](https://gitlab.com/researchable/general/gems/loggable/commit/fbda4541ab6a67c9ef397845282614655d4ae092))
data/Gemfile ADDED
@@ -0,0 +1,17 @@
1
+ # frozen_string_literal: true
2
+
3
+ source 'https://rubygems.org'
4
+
5
+ # Specify your gem's dependencies in loggable.gemspec
6
+ gemspec
7
+
8
+ gem 'rake', '~> 13.0'
9
+
10
+ gem 'rspec', '~> 3.0'
11
+
12
+ # TODO: remove ref once first implementation has been merged to master
13
+ gem 'ruboguide', git: 'https://gitlab.com/researchable/general/gems/ruboguide'
14
+
15
+ gem 'ecs-logging', '~> 1.0'
16
+ gem 'lograge'
17
+ gem 'logstash-event'
data/Gemfile.lock ADDED
@@ -0,0 +1,143 @@
1
+ GIT
2
+ remote: https://gitlab.com/researchable/general/gems/ruboguide
3
+ revision: fd7b55c93c3ebfe63aed5cb7e5c9c38bd4a45020
4
+ specs:
5
+ ruboguide (0.1.0)
6
+ rubocop (= 1.23.0)
7
+ rubocop-performance (= 1.12.0)
8
+ rubocop-rails (= 2.12.4)
9
+ rubocop-rake (= 0.6.0)
10
+ rubocop-rspec (= 2.6.0)
11
+
12
+ PATH
13
+ remote: .
14
+ specs:
15
+ researchable_loggable (1.0.0)
16
+ ecs-logging (~> 1.0)
17
+ lograge
18
+ logstash-event
19
+
20
+ GEM
21
+ remote: https://rubygems.org/
22
+ specs:
23
+ actionpack (7.0.4.2)
24
+ actionview (= 7.0.4.2)
25
+ activesupport (= 7.0.4.2)
26
+ rack (~> 2.0, >= 2.2.0)
27
+ rack-test (>= 0.6.3)
28
+ rails-dom-testing (~> 2.0)
29
+ rails-html-sanitizer (~> 1.0, >= 1.2.0)
30
+ actionview (7.0.4.2)
31
+ activesupport (= 7.0.4.2)
32
+ builder (~> 3.1)
33
+ erubi (~> 1.4)
34
+ rails-dom-testing (~> 2.0)
35
+ rails-html-sanitizer (~> 1.1, >= 1.2.0)
36
+ activesupport (7.0.4.2)
37
+ concurrent-ruby (~> 1.0, >= 1.0.2)
38
+ i18n (>= 1.6, < 2)
39
+ minitest (>= 5.1)
40
+ tzinfo (~> 2.0)
41
+ ast (2.4.2)
42
+ builder (3.2.4)
43
+ concurrent-ruby (1.2.0)
44
+ crass (1.0.6)
45
+ diff-lcs (1.5.0)
46
+ ecs-logging (1.0.0)
47
+ erubi (1.12.0)
48
+ i18n (1.12.0)
49
+ concurrent-ruby (~> 1.0)
50
+ lograge (0.12.0)
51
+ actionpack (>= 4)
52
+ activesupport (>= 4)
53
+ railties (>= 4)
54
+ request_store (~> 1.0)
55
+ logstash-event (1.2.02)
56
+ loofah (2.19.1)
57
+ crass (~> 1.0.2)
58
+ nokogiri (>= 1.5.9)
59
+ method_source (1.0.0)
60
+ minitest (5.17.0)
61
+ nokogiri (1.14.1-x86_64-linux)
62
+ racc (~> 1.4)
63
+ parallel (1.22.1)
64
+ parser (3.2.1.0)
65
+ ast (~> 2.4.1)
66
+ racc (1.6.2)
67
+ rack (2.2.6.2)
68
+ rack-test (2.0.2)
69
+ rack (>= 1.3)
70
+ rails-dom-testing (2.0.3)
71
+ activesupport (>= 4.2.0)
72
+ nokogiri (>= 1.6)
73
+ rails-html-sanitizer (1.5.0)
74
+ loofah (~> 2.19, >= 2.19.1)
75
+ railties (7.0.4.2)
76
+ actionpack (= 7.0.4.2)
77
+ activesupport (= 7.0.4.2)
78
+ method_source
79
+ rake (>= 12.2)
80
+ thor (~> 1.0)
81
+ zeitwerk (~> 2.5)
82
+ rainbow (3.1.1)
83
+ rake (13.0.6)
84
+ regexp_parser (2.7.0)
85
+ request_store (1.5.1)
86
+ rack (>= 1.4)
87
+ rexml (3.2.5)
88
+ rspec (3.12.0)
89
+ rspec-core (~> 3.12.0)
90
+ rspec-expectations (~> 3.12.0)
91
+ rspec-mocks (~> 3.12.0)
92
+ rspec-core (3.12.1)
93
+ rspec-support (~> 3.12.0)
94
+ rspec-expectations (3.12.2)
95
+ diff-lcs (>= 1.2.0, < 2.0)
96
+ rspec-support (~> 3.12.0)
97
+ rspec-mocks (3.12.3)
98
+ diff-lcs (>= 1.2.0, < 2.0)
99
+ rspec-support (~> 3.12.0)
100
+ rspec-support (3.12.0)
101
+ rubocop (1.23.0)
102
+ parallel (~> 1.10)
103
+ parser (>= 3.0.0.0)
104
+ rainbow (>= 2.2.2, < 4.0)
105
+ regexp_parser (>= 1.8, < 3.0)
106
+ rexml
107
+ rubocop-ast (>= 1.12.0, < 2.0)
108
+ ruby-progressbar (~> 1.7)
109
+ unicode-display_width (>= 1.4.0, < 3.0)
110
+ rubocop-ast (1.26.0)
111
+ parser (>= 3.2.1.0)
112
+ rubocop-performance (1.12.0)
113
+ rubocop (>= 1.7.0, < 2.0)
114
+ rubocop-ast (>= 0.4.0)
115
+ rubocop-rails (2.12.4)
116
+ activesupport (>= 4.2.0)
117
+ rack (>= 1.1)
118
+ rubocop (>= 1.7.0, < 2.0)
119
+ rubocop-rake (0.6.0)
120
+ rubocop (~> 1.0)
121
+ rubocop-rspec (2.6.0)
122
+ rubocop (~> 1.19)
123
+ ruby-progressbar (1.11.0)
124
+ thor (1.2.1)
125
+ tzinfo (2.0.6)
126
+ concurrent-ruby (~> 1.0)
127
+ unicode-display_width (2.4.2)
128
+ zeitwerk (2.6.7)
129
+
130
+ PLATFORMS
131
+ x86_64-linux
132
+
133
+ DEPENDENCIES
134
+ ecs-logging (~> 1.0)
135
+ lograge
136
+ logstash-event
137
+ rake (~> 13.0)
138
+ researchable_loggable!
139
+ rspec (~> 3.0)
140
+ ruboguide!
141
+
142
+ BUNDLED WITH
143
+ 2.4.6
data/LICENSE.txt ADDED
@@ -0,0 +1,21 @@
1
+ The MIT License (MIT)
2
+
3
+ Copyright (c) 2023 Mario Rios
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in
13
+ all copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
21
+ THE SOFTWARE.
data/README.md ADDED
@@ -0,0 +1,99 @@
1
+ # Loggable
2
+
3
+ Loggable is Researchable's gem to standardize how we do logging on Ruby on Rails applications.
4
+
5
+ ## What it does
6
+
7
+ Loggable configures how your Rails applications outputs and formats logs, in a way that is easy to export and understand
8
+ by the elastic stack. Specifically it does the following:
9
+
10
+ 1. Configures logs to be printed to stdout, so the elastic agent can read them.
11
+ 2. Formats logs using the [ecs standard](https://www.elastic.co/guide/en/ecs/current/index.html).
12
+ 3. Uses [lograge](https://github.com/roidrage/lograge) to improve how request logging is done.
13
+ 4. Enables log-correlation for the elastic apm.
14
+
15
+ After adding this gem, your (production) logs will go from looking like this:
16
+ ```
17
+ Started GET "/api/v1/profiles/my?hola=adiosa" for 172.19.0.1 at 2023-02-21 12:48:48 +0000
18
+ Processing by Api::V1::ProfilesController#my as */*
19
+ Parameters: {"hola"=>"adiosa"}
20
+ Completed 401 Unauthorized in 11ms (ActiveRecord: 0.0ms | MongoDB: 0.0ms | Allocations: 3355)
21
+ ```
22
+
23
+ to looking like this:
24
+ ```
25
+ {"@timestamp":"2023-02-21T13:11:56.457Z","log.level":"INFO","message":"method=GET path=/api/v1/profiles/my format=*/* controller=Api::V1::ProfilesController action=my status=200 duration=11.54 view=0.00 db=0.00 unpermitted_params=[\"hola\"] params={\"hola\"=>\"adiosa\"}","ecs.version":"1.4.0","source.ip":"172.19.0.1","user.id":null,"http.code":"200"}
26
+ ```
27
+
28
+ While slightly less human readable, this is meant to be used along with a log aggregator that will display it in a
29
+ readable form. Development logs remain unaffected (see [Usage](#usage) for more on this).
30
+
31
+ ## How it works
32
+ Loggable is a Railtie that overrides the default rails logger configuration. Right from the initialization process, the
33
+ logger is set to `::EcsLogging::Logger` and the default log level is set to `INFO` (this can be overridden in
34
+ application.rb or your environment configuration). It also configures lograge automatically. Note that the
35
+ base_controller_class is set to `'ApplicationController'`. All your controllers should extend from this class.
36
+
37
+ By default lograge and ::EcsLogging::Logger are not mutually compatible. The ECS formatter will try to render the output
38
+ of lograge as the message, however some of the fields in the lograge output are metadata. To fix this, this gem uses a
39
+ monkey patch on the ECS gem that flattens the lograge output onto the Ecs object.
40
+
41
+ ## Installation
42
+ Add this to your Gemfile (replace the tag with your intended one):
43
+ ```ruby
44
+ gem 'loggable', git: 'https://gitlab.com/researchable/general/gems/loggable'
45
+ ```
46
+
47
+ Additionally, if you want to be able to correlate logs with Elastic's APM traces, you may also add the elastic apm gem:
48
+ ```ruby
49
+ gem 'elastic-apm'
50
+ ```
51
+
52
+ Then execute:
53
+ ```bash
54
+ $ bundle install
55
+ ```
56
+
57
+ If loggable detects the presence of this gem, it will inject `transaction.id`, `span.id` and `trace.id` to the log line.
58
+
59
+ ## Usage
60
+
61
+ For a brand new Rails application, adding this gem to the Gemfile should be all the configuration that is needed. This
62
+ gem will automatically configure the Rails logger and lograge to follow the Researchable standard.
63
+
64
+ There is only one parameter that is configurable, and that is `production_like`. By default loggable will only
65
+ modify how the logs look on production. This is because the format that this gem enforces is slightly less
66
+ human readable (in favour of machine readability and compatibility with the Elastic Common Schema) than the default
67
+ Rails one. For development, the more human readable format is preferred. However, if you want to override this and
68
+ log in the production format while on development (e.g. because you are troubleshooting a problem with the logs or you
69
+ are developing against this gem) then you may add the following to your `config/environment/development.rb` file:
70
+ ```ruby
71
+ config.loggable.production_like = true
72
+ ```
73
+
74
+ No other configuration options are provided because this gem seeks to enforce consistency across all applications.
75
+
76
+ For applications that already had some level of log customization, some cleanup might be needed:
77
+
78
+ 1. If lograge was added to the Gemfile already, it may be removed. Loggable relies on lograge internally, and will
79
+ make it available to the Rails application.
80
+ 2. Consequently, remove `config/lograge.rb` and all lograge related configuration.
81
+ 3. Remove all existing log configuration, specially for production environments. Places to look for this
82
+ configuration are `config/application.rb` and `config/environment/production.rb`. If you chose to enable
83
+ `production_like` mode on your development environment, you might also want to cleanup
84
+ `config/environment/development.rb`. Things to look for when cleaning up are statements like `config.logger` and
85
+ `config.log_formatter` and anything with the word `log` or `logger` in it.
86
+
87
+ ## Development
88
+
89
+ This gem is a Railtie, and it's meant to be run under a Rails project. The easiest way to develop and test this gem is
90
+ to add it to your Rails project locally by adding this to your Rails Gemfile:
91
+ ```ruby
92
+ gem 'loggable', path: "<your local path to the loggable gem you're developing against>"
93
+ ```
94
+ If your Rails application is being executed by a docker container, then map the local gem repository to a directory in
95
+ the container through a volume, and add the path of the volume to the Gemfile statement instead.
96
+
97
+ ## License
98
+
99
+ The gem is available as open source under the terms of the [MIT License](https://opensource.org/licenses/MIT).
data/Rakefile ADDED
@@ -0,0 +1,12 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'bundler/gem_tasks'
4
+ require 'rspec/core/rake_task'
5
+
6
+ RSpec::Core::RakeTask.new(:spec)
7
+
8
+ require 'rubocop/rake_task'
9
+
10
+ RuboCop::RakeTask.new
11
+
12
+ task default: %i[spec rubocop]
@@ -0,0 +1,55 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'ecs_logging/formatter'
4
+
5
+ module Loggable
6
+ module EcsLogging
7
+ # A monkey patch to the ::EcsLogging::Formatter to customize how messages from lograge are rendered
8
+ module FormatterMonkeyPatch
9
+ def call(severity, time, progname, msg, **extras)
10
+ base = {
11
+ '@timestamp': time.utc.iso8601(3),
12
+ 'log.level': severity,
13
+ message: msg,
14
+ 'ecs.version': '1.4.0'
15
+ }
16
+
17
+ base['log.logger'] = progname if progname
18
+
19
+ base.merge!(msg.except(:lograge)) if msg.is_a?(Hash) && msg.key?(:lograge)
20
+ base.merge!(extras) if extras
21
+
22
+ "#{JSON.fast_generate(base)}\n"
23
+ end
24
+
25
+ class << self
26
+ def apply_patch
27
+ const = find_const
28
+ mtd = find_method(const)
29
+
30
+ # byebug
31
+ const.prepend(self) if const && mtd && mtd.arity == -5
32
+ end
33
+
34
+ private
35
+
36
+ def find_const
37
+ Kernel.const_get('::EcsLogging::Formatter')
38
+ rescue NameError
39
+ puts '[WARN] ::EcsLogging::Formatter not found. Patch could not be applied.' # rubocop:disable Rails/Output
40
+ end
41
+
42
+ def find_method(const)
43
+ return unless const
44
+
45
+ method_name = :call
46
+ const.instance_method(method_name)
47
+ rescue NameError
48
+ puts "[WARN] '#{method_name}' method not found in '#{const}'. Patch could not be applied." # rubocop:disable Rails/Output
49
+ end
50
+ end
51
+ end
52
+ end
53
+ end
54
+
55
+ Loggable::EcsLogging::FormatterMonkeyPatch.apply_patch
@@ -0,0 +1,22 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'lograge'
4
+ require 'active_support/core_ext/array'
5
+
6
+ module Loggable
7
+ module Lograge
8
+ # Custom formatter class that renders logs as ruby objects with just the ecs fields generated by the logger, the
9
+ # message, and a lograge flag so the ECS logger knows to process this further before rendering
10
+ class Formatter < ::Lograge::Formatters::KeyValue
11
+ def call(data)
12
+ (data[:ecs] || {}).merge(message: super(data), lograge: true)
13
+ end
14
+
15
+ protected
16
+
17
+ def fields_to_display(data)
18
+ data.keys.excluding(%i[ecs])
19
+ end
20
+ end
21
+ end
22
+ end
@@ -0,0 +1,60 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'ecs_logging/logger'
4
+ require 'rails'
5
+
6
+ module Loggable
7
+ # Railtie to configure logging before rails starts
8
+ class Railtie < Rails::Railtie
9
+ # We add a new loggable namespace to the config object, to keep all the configuration related to this gem organized
10
+ config.loggable = ActiveSupport::OrderedOptions.new
11
+ config.loggable.production_like = false
12
+
13
+ # Initializer runs before initialize_logger (found in Bootstrap) so from the very beginning we are logging using
14
+ # the ecs format, even during the initialization process
15
+ initializer :loggable_web, before: :initialize_logger do
16
+ Rails.application.configure do
17
+ production_like = Rails.env.production? || config.loggable.production_like
18
+ if production_like
19
+ Rails.logger = ::EcsLogging::Logger.new($stdout)
20
+ Rails.logger.level = ActiveSupport::Logger.const_get(config.log_level.to_s.upcase || 'INFO')
21
+ end
22
+
23
+ # lograge configuration
24
+ config.lograge.enabled = true
25
+ config.lograge.base_controller_class = 'ApplicationController'
26
+ config.lograge.custom_payload do |controller|
27
+ response_code = controller.response.code
28
+ {
29
+ ecs: {
30
+ 'source.ip': controller.request.ip,
31
+ 'user.id': controller.current_user.try(:id),
32
+ 'http.code': response_code
33
+ },
34
+ status: response_code
35
+ }
36
+ end
37
+ config.lograge.custom_options = lambda do |event|
38
+ exceptions = %w[controller action format id]
39
+ { params: event.payload[:params].except(*exceptions) }
40
+ end
41
+ config.lograge.formatter = Loggable::Lograge::Formatter.new if production_like
42
+ end
43
+ end
44
+
45
+ initializer :loggable_worker, before: :initializer_logger do
46
+ Rails.application.configure do
47
+ if defined?(Delayed::Worker)
48
+ if Rails.env.production? || config.loggable.production_like
49
+ Delayed::Worker.logger = ::EcsLogging::Logger.new($stdout)
50
+ Delayed::Worker.logger.level = ActiveSupport::Logger.const_get(config.log_level.to_s.upcase || 'INFO')
51
+ else
52
+ Delayed::Worker.logger = Logger.new($stdout)
53
+ Delayed::Worker.logger.level = Logger::DEBUG
54
+ Delayed::Worker.logger.datetime_format = '%Y-%m-%d %H:%M:%S'
55
+ end
56
+ end
57
+ end
58
+ end
59
+ end
60
+ end
@@ -0,0 +1,5 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Loggable
4
+ VERSION = '1.0.1'
5
+ end
data/lib/loggable.rb ADDED
@@ -0,0 +1,11 @@
1
+ # frozen_string_literal: true
2
+
3
+ require_relative 'loggable/version'
4
+ require_relative 'loggable/railtie' if defined?(Rails::Railtie)
5
+ require_relative 'loggable/ecs_logging/formatter_monkey_patch'
6
+ require_relative 'loggable/lograge/formatter'
7
+
8
+ module Loggable
9
+ class Error < StandardError
10
+ end
11
+ end
@@ -0,0 +1,5 @@
1
+ # frozen_string_literal: true
2
+
3
+ module TestGem
4
+ SOME_CONST = '1.1.2'
5
+ end
@@ -0,0 +1,5 @@
1
+ # frozen_string_literal: true
2
+
3
+ module TestGem
4
+ VERSION = '0.1.0.alpha.1'
5
+ end
@@ -0,0 +1,5 @@
1
+ # frozen_string_literal: true
2
+
3
+ module TestGem
4
+ VERSION = '1.0.1'
5
+ end
data/sig/loggable.rbs ADDED
@@ -0,0 +1,4 @@
1
+ module Loggable
2
+ VERSION: String
3
+ # See the writing guide of rbs: https://github.com/ruby/rbs#guides
4
+ end
metadata ADDED
@@ -0,0 +1,110 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: researchable_loggable
3
+ version: !ruby/object:Gem::Version
4
+ version: 1.0.1
5
+ platform: ruby
6
+ authors:
7
+ - Researchable
8
+ autorequire:
9
+ bindir: exe
10
+ cert_chain: []
11
+ date: 2023-03-08 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: ecs-logging
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - "~>"
18
+ - !ruby/object:Gem::Version
19
+ version: '1.0'
20
+ type: :runtime
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - "~>"
25
+ - !ruby/object:Gem::Version
26
+ version: '1.0'
27
+ - !ruby/object:Gem::Dependency
28
+ name: lograge
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - ">="
32
+ - !ruby/object:Gem::Version
33
+ version: '0'
34
+ type: :runtime
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - ">="
39
+ - !ruby/object:Gem::Version
40
+ version: '0'
41
+ - !ruby/object:Gem::Dependency
42
+ name: logstash-event
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - ">="
46
+ - !ruby/object:Gem::Version
47
+ version: '0'
48
+ type: :runtime
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - ">="
53
+ - !ruby/object:Gem::Version
54
+ version: '0'
55
+ description: |2
56
+ Researchable's Loggable relies on lograge and elastic's ecs format to log events in a way that is easy to ingest by
57
+ logstash. This enables log correlation with traces across multiple services.
58
+ email:
59
+ - info@researchable.nl
60
+ executables: []
61
+ extensions: []
62
+ extra_rdoc_files: []
63
+ files:
64
+ - ".editorconfig"
65
+ - ".rspec"
66
+ - ".rubocop.yml"
67
+ - ".ruby-gemset"
68
+ - ".ruby-version"
69
+ - CHANGELOG.md
70
+ - Gemfile
71
+ - Gemfile.lock
72
+ - LICENSE.txt
73
+ - README.md
74
+ - Rakefile
75
+ - lib/loggable.rb
76
+ - lib/loggable/ecs_logging/formatter_monkey_patch.rb
77
+ - lib/loggable/lograge/formatter.rb
78
+ - lib/loggable/railtie.rb
79
+ - lib/loggable/version.rb
80
+ - node_modules/semantic-release-rubygem/src/__tests__/fixtures/invalid-version-file/lib/test-gem/version.rb
81
+ - node_modules/semantic-release-rubygem/src/__tests__/fixtures/prerelease/lib/test-gem/version.rb
82
+ - node_modules/semantic-release-rubygem/src/__tests__/fixtures/valid/lib/test-gem/version.rb
83
+ - sig/loggable.rbs
84
+ homepage: https://gitlab.com/researchable/general/gems/loggable/-/blob/v1.0.1/README.md
85
+ licenses:
86
+ - MIT
87
+ metadata:
88
+ homepage_uri: https://gitlab.com/researchable/general/gems/loggable/-/blob/v1.0.1/README.md
89
+ source_code_uri: https://gitlab.com/researchable/general/gems/loggable
90
+ changelog_uri: https://gitlab.com/researchable/general/gems/loggable/-/blob/v1.0.1/CHANGELOG.md
91
+ post_install_message:
92
+ rdoc_options: []
93
+ require_paths:
94
+ - lib
95
+ required_ruby_version: !ruby/object:Gem::Requirement
96
+ requirements:
97
+ - - ">="
98
+ - !ruby/object:Gem::Version
99
+ version: '3.0'
100
+ required_rubygems_version: !ruby/object:Gem::Requirement
101
+ requirements:
102
+ - - ">="
103
+ - !ruby/object:Gem::Version
104
+ version: '0'
105
+ requirements: []
106
+ rubygems_version: 3.3.26
107
+ signing_key:
108
+ specification_version: 4
109
+ summary: Researchable's gem to standardize logging on all Rails applications.
110
+ test_files: []