researchable_loggable 1.0.1

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