logtail-rails 0.1.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (51) hide show
  1. checksums.yaml +7 -0
  2. data/.github/workflows/main.yml +144 -0
  3. data/.gitignore +23 -0
  4. data/.rspec +3 -0
  5. data/Gemfile +3 -0
  6. data/LICENSE.md +13 -0
  7. data/README.md +10 -0
  8. data/Rakefile +6 -0
  9. data/gemfiles/rails-3.0.gemfile +8 -0
  10. data/gemfiles/rails-3.1.gemfile +8 -0
  11. data/gemfiles/rails-3.2.gemfile +8 -0
  12. data/gemfiles/rails-4.0.gemfile +12 -0
  13. data/gemfiles/rails-4.1.gemfile +12 -0
  14. data/gemfiles/rails-4.2.gemfile +12 -0
  15. data/gemfiles/rails-5.0.gemfile +12 -0
  16. data/gemfiles/rails-5.1.gemfile +12 -0
  17. data/gemfiles/rails-5.2.gemfile +12 -0
  18. data/gemfiles/rails-6.0.gemfile +12 -0
  19. data/gemfiles/rails-6.1.gemfile +12 -0
  20. data/gemfiles/rails-edge.gemfile +10 -0
  21. data/lib/logtail-rails.rb +64 -0
  22. data/lib/logtail-rails/action_controller.rb +17 -0
  23. data/lib/logtail-rails/action_controller/log_subscriber.rb +25 -0
  24. data/lib/logtail-rails/action_controller/log_subscriber/logtail_log_subscriber.rb +46 -0
  25. data/lib/logtail-rails/action_dispatch.rb +20 -0
  26. data/lib/logtail-rails/action_dispatch/debug_exceptions.rb +51 -0
  27. data/lib/logtail-rails/action_view.rb +17 -0
  28. data/lib/logtail-rails/action_view/log_subscriber.rb +25 -0
  29. data/lib/logtail-rails/action_view/log_subscriber/logtail_log_subscriber.rb +84 -0
  30. data/lib/logtail-rails/active_record.rb +17 -0
  31. data/lib/logtail-rails/active_record/log_subscriber.rb +20 -0
  32. data/lib/logtail-rails/active_record/log_subscriber/logtail_log_subscriber.rb +52 -0
  33. data/lib/logtail-rails/active_support_log_subscriber.rb +39 -0
  34. data/lib/logtail-rails/config.rb +12 -0
  35. data/lib/logtail-rails/config/action_controller.rb +29 -0
  36. data/lib/logtail-rails/config/action_view.rb +29 -0
  37. data/lib/logtail-rails/config/active_record.rb +29 -0
  38. data/lib/logtail-rails/error_event.rb +62 -0
  39. data/lib/logtail-rails/logger.rb +20 -0
  40. data/lib/logtail-rails/overrides.rb +12 -0
  41. data/lib/logtail-rails/overrides/active_support_3_tagged_logging.rb +111 -0
  42. data/lib/logtail-rails/overrides/active_support_buffered_logger.rb +22 -0
  43. data/lib/logtail-rails/overrides/active_support_tagged_logging.rb +66 -0
  44. data/lib/logtail-rails/overrides/lograge.rb +18 -0
  45. data/lib/logtail-rails/overrides/rails_stdout_logging.rb +20 -0
  46. data/lib/logtail-rails/rack_logger.rb +59 -0
  47. data/lib/logtail-rails/railtie.rb +27 -0
  48. data/lib/logtail-rails/session_context.rb +37 -0
  49. data/lib/logtail-rails/version.rb +7 -0
  50. data/logtail-rails.gemspec +60 -0
  51. metadata +263 -0
checksums.yaml ADDED
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA256:
3
+ metadata.gz: bb92429187fc50aa6622a0cc2cccf5d177819012e62a2fb952a8dd587ee2fb55
4
+ data.tar.gz: 4afe93789eac96a479ecfa54ca99752936bf2387bd17f0699254fa8ecef62cc0
5
+ SHA512:
6
+ metadata.gz: c5be83553b8850cb86ae68858862ec1d5055a7fd8d07f310764e8da66fe0752a1deaa7d4459c04436b238351e9e4a9fd801ef93dcd751d4d7c35a2ff8d131b52
7
+ data.tar.gz: 483a2803fd7a1d1fe9bb9a4f078161ac4236439dd2caa376859a94eeb0a7b996e035a620d96e3b98a9e003209b912bc0e6812da6f7f0698bbb54ed59cf9638e7
@@ -0,0 +1,144 @@
1
+ name: build
2
+
3
+ on: [ push, pull_request ]
4
+
5
+ jobs:
6
+ test:
7
+ runs-on: ubuntu-20.04
8
+
9
+ strategy:
10
+ fail-fast: false
11
+
12
+ matrix:
13
+ ruby-version:
14
+ - 3.0.0
15
+ - 2.7.2
16
+ - 2.6.6
17
+ - 2.5.8
18
+ - 2.4.10
19
+ - 2.3.8
20
+ - 2.2.10
21
+ - jruby-9.2.14.0
22
+ - truffleruby-21.0.0
23
+ gemfile:
24
+ - rails-edge
25
+ - rails-6.1
26
+ - rails-6.0
27
+ - rails-5.2
28
+ - rails-5.1
29
+ - rails-5.0
30
+ exclude:
31
+ - gemfile: rails-edge
32
+ ruby-version: 2.6.6
33
+ - gemfile: rails-edge
34
+ ruby-version: 2.5.8
35
+ - gemfile: rails-edge
36
+ ruby-version: 2.4.10
37
+ - gemfile: rails-edge
38
+ ruby-version: 2.3.8
39
+ - gemfile: rails-edge
40
+ ruby-version: 2.2.10
41
+ - gemfile: rails-edge
42
+ ruby-version: jruby-9.2.14.0
43
+ - gemfile: rails-edge
44
+ ruby-version: truffleruby-21.0.0
45
+
46
+ - ruby-version: 3.0.0
47
+ gemfile: rails-5.2
48
+ - ruby-version: 3.0.0
49
+ gemfile: rails-5.1
50
+ - ruby-version: 3.0.0
51
+ gemfile: rails-5.0
52
+
53
+ - gemfile: rails-6.1
54
+ ruby-version: 2.4.10
55
+ - gemfile: rails-6.1
56
+ ruby-version: 2.3.8
57
+ - gemfile: rails-6.1
58
+ ruby-version: 2.2.10
59
+ - gemfile: rails-6.1
60
+ ruby-version: 2.2.10
61
+
62
+ - gemfile: rails-6.0
63
+ ruby-version: 2.4.10
64
+ - gemfile: rails-6.0
65
+ ruby-version: 2.3.8
66
+ - gemfile: rails-6.0
67
+ ruby-version: 2.2.10
68
+
69
+ - gemfile: rails-5.2
70
+ ruby-version: 2.2.10
71
+
72
+ env:
73
+ BUNDLE_GEMFILE: gemfiles/${{ matrix.gemfile }}.gemfile
74
+ RAILS_ENV: test
75
+
76
+ steps:
77
+ - uses: actions/checkout@v2
78
+
79
+ - name: Selected Gemfile
80
+ run: echo $BUNDLE_GEMFILE
81
+
82
+ - name: Set up Ruby ${{ matrix.ruby-version }}
83
+ uses: ruby/setup-ruby@v1
84
+ with:
85
+ ruby-version: ${{ matrix.ruby-version }}
86
+ bundler-cache: true
87
+
88
+ - name: Run tests
89
+ run: bundle exec rspec --format documentation
90
+
91
+
92
+ test_bundler_v1:
93
+ runs-on: ubuntu-20.04
94
+
95
+ strategy:
96
+ fail-fast: false
97
+
98
+ matrix:
99
+ ruby-version:
100
+ - 2.6.6
101
+ - 2.5.8
102
+ - 2.4.10
103
+ - 2.3.8
104
+ - 2.2.10
105
+ gemfile:
106
+ - rails-4.2
107
+ - rails-4.1
108
+ - rails-4.0
109
+ - rails-3.2
110
+
111
+ exclude:
112
+ - gemfile: rails-4.1
113
+ ruby-version: 2.6.6
114
+ - gemfile: rails-4.1
115
+ ruby-version: 2.5.8
116
+ - gemfile: rails-4.1
117
+ ruby-version: 2.4.10
118
+
119
+ - gemfile: rails-4.0
120
+ ruby-version: 2.6.6
121
+ - gemfile: rails-4.0
122
+ ruby-version: 2.5.8
123
+ - gemfile: rails-4.0
124
+ ruby-version: 2.4.10
125
+
126
+ env:
127
+ BUNDLE_GEMFILE: gemfiles/${{ matrix.gemfile }}.gemfile
128
+ RAILS_ENV: test
129
+
130
+ steps:
131
+ - uses: actions/checkout@v2
132
+
133
+ - name: Selected Gemfile
134
+ run: echo $BUNDLE_GEMFILE
135
+
136
+ - name: Set up Ruby ${{ matrix.ruby-version }}
137
+ uses: ruby/setup-ruby@v1
138
+ with:
139
+ bundler: 1.17
140
+ ruby-version: ${{ matrix.ruby-version }}
141
+ bundler-cache: true
142
+
143
+ - name: Run tests
144
+ run: bundle exec rspec --format documentation
data/.gitignore ADDED
@@ -0,0 +1,23 @@
1
+ /doc/
2
+ /pkg/
3
+ /spec/reports/
4
+ /tmp/
5
+
6
+ # rspec failure tracking
7
+ .rspec_status
8
+ .DS_Store
9
+ .rvmrc
10
+ .ruby-version
11
+ coverage
12
+ Gemfile.lock
13
+ *.swp
14
+ *.gem
15
+
16
+ gemfiles/*.lock
17
+
18
+ /.bundle
19
+ /.yardoc
20
+ /doc
21
+ /log
22
+ /tmp
23
+ /pkg
data/.rspec ADDED
@@ -0,0 +1,3 @@
1
+ --format documentation
2
+ --color
3
+ --require spec_helper
data/Gemfile ADDED
@@ -0,0 +1,3 @@
1
+ source "https://rubygems.org"
2
+
3
+ gemspec
data/LICENSE.md ADDED
@@ -0,0 +1,13 @@
1
+ # License
2
+
3
+ Copyright (c) 2021, Logtail
4
+
5
+ Permission to use, copy, modify, and/or distribute this software for any purpose with or without fee is hereby granted,
6
+ provided that the above copyright notice and this permission notice appear in all copies.
7
+
8
+ THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL
9
+ IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,
10
+ INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
11
+ ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF
12
+ THIS SOFTWARE.
13
+
data/README.md ADDED
@@ -0,0 +1,10 @@
1
+ # 🪵 Logtail Integration For Rails
2
+
3
+ [![ISC License](https://img.shields.io/badge/license-ISC-ff69b4.svg)](LICENSE.md)
4
+ [![Build Status](https://github.com/logtail/logtail-ruby-rails/workflows/build/badge.svg)](https://github.com/logtail/logtail-ruby-rails/actions?query=workflow%3Abuild)
5
+
6
+ This library integrates the [`logtail` Ruby library](https://github.com/logtail/logtail-ruby) with
7
+ the [rails](https://github.com/rails/rails) framework, turning your rails logs into rich structured events.
8
+
9
+ * **Sign-up: [https://logtail.com](https://logtail.com)**
10
+
data/Rakefile ADDED
@@ -0,0 +1,6 @@
1
+ require "bundler/gem_tasks"
2
+ require "rspec/core/rake_task"
3
+
4
+ RSpec::Core::RakeTask.new(:spec)
5
+
6
+ task :default => :spec
@@ -0,0 +1,8 @@
1
+ source 'https://rubygems.org'
2
+
3
+ gem 'rails', '~> 3.0.0'
4
+
5
+ gem 'logtail-ruby'
6
+ gem 'logtail-rack'
7
+
8
+ gemspec :path => '../'
@@ -0,0 +1,8 @@
1
+ source 'https://rubygems.org'
2
+
3
+ gem 'rails', '~> 3.1.0'
4
+
5
+ gem 'logtail-ruby'
6
+ gem 'logtail-rack'
7
+
8
+ gemspec :path => '../'
@@ -0,0 +1,8 @@
1
+ source 'https://rubygems.org'
2
+
3
+ gem 'rails', '~> 3.2.0'
4
+
5
+ gem 'logtail-ruby'
6
+ gem 'logtail-rack'
7
+
8
+ gemspec :path => '../'
@@ -0,0 +1,12 @@
1
+ source 'https://rubygems.org'
2
+
3
+ gem 'rails', '~> 4.0.0'
4
+
5
+ gem 'logtail-ruby'
6
+ gem 'logtail-rack'
7
+
8
+ if RUBY_PLATFORM == "java"
9
+ gem 'mime-types', '2.6.2'
10
+ end
11
+
12
+ gemspec :path => '../'
@@ -0,0 +1,12 @@
1
+ source 'https://rubygems.org'
2
+
3
+ gem 'rails', '~> 4.1.0'
4
+
5
+ gem 'logtail-ruby'
6
+ gem 'logtail-rack'
7
+
8
+ if RUBY_PLATFORM == "java"
9
+ gem 'mime-types', '2.6.2'
10
+ end
11
+
12
+ gemspec :path => '../'
@@ -0,0 +1,12 @@
1
+ source 'https://rubygems.org'
2
+
3
+ gem 'rails', '~> 4.2.0'
4
+
5
+ gem 'logtail-ruby'
6
+ gem 'logtail-rack'
7
+
8
+ if RUBY_PLATFORM == "java"
9
+ gem 'mime-types', '2.6.2'
10
+ end
11
+
12
+ gemspec :path => '../'
@@ -0,0 +1,12 @@
1
+ source 'https://rubygems.org'
2
+
3
+ gem 'rails', '~> 5.0.0'
4
+
5
+ gem 'logtail-ruby'
6
+ gem 'logtail-rack'
7
+
8
+ if RUBY_PLATFORM == "java"
9
+ gem 'mime-types', '2.6.2'
10
+ end
11
+
12
+ gemspec :path => '../'
@@ -0,0 +1,12 @@
1
+ source 'https://rubygems.org'
2
+
3
+ gem 'rails', '~> 5.1.0'
4
+
5
+ gem 'logtail-ruby'
6
+ gem 'logtail-rack'
7
+
8
+ if RUBY_PLATFORM == "java"
9
+ gem 'mime-types', '2.6.2'
10
+ end
11
+
12
+ gemspec :path => '../'
@@ -0,0 +1,12 @@
1
+ source 'https://rubygems.org'
2
+
3
+ gem 'rails', '~> 5.2.0'
4
+
5
+ gem 'logtail-ruby'
6
+ gem 'logtail-rack'
7
+
8
+ if RUBY_PLATFORM == "java"
9
+ gem 'mime-types', '2.6.2'
10
+ end
11
+
12
+ gemspec :path => '../'
@@ -0,0 +1,12 @@
1
+ source 'https://rubygems.org'
2
+
3
+ gem 'rails', '~> 6.0.0'
4
+
5
+ gem 'logtail-ruby'
6
+ gem 'logtail-rack'
7
+
8
+ if RUBY_PLATFORM == "java"
9
+ gem 'mime-types', '2.6.2'
10
+ end
11
+
12
+ gemspec :path => '../'
@@ -0,0 +1,12 @@
1
+ source 'https://rubygems.org'
2
+
3
+ gem 'rails', '~> 6.1.0'
4
+
5
+ gem 'logtail-ruby'
6
+ gem 'logtail-rack'
7
+
8
+ if RUBY_PLATFORM == "java"
9
+ gem 'mime-types', '2.6.2'
10
+ end
11
+
12
+ gemspec :path => '../'
@@ -0,0 +1,10 @@
1
+ source 'https://rubygems.org'
2
+
3
+ gem 'rack', git: 'https://github.com/rack/rack', branch: 'master'
4
+ gem 'arel', git: 'https://github.com/rails/arel', branch: 'master'
5
+ gem 'rails', git: 'https://github.com/rails/rails', branch: 'main'
6
+
7
+ gem 'logtail-ruby'
8
+ gem 'logtail-rack'
9
+
10
+ gemspec :path => '../'
@@ -0,0 +1,64 @@
1
+ require "logtail-rails/overrides"
2
+
3
+ require "logtail"
4
+ require "rails"
5
+ require "logtail-rails/active_support_log_subscriber"
6
+ require "logtail-rails/config"
7
+ require "logtail-rails/railtie"
8
+
9
+ require "logtail-rack/http_context"
10
+ require "logtail-rack/http_events"
11
+ require "logtail-rack/user_context"
12
+ require "logtail-rails/session_context"
13
+ require "logtail-rails/rack_logger"
14
+ require "logtail-rails/error_event"
15
+
16
+ require "logtail-rails/action_controller"
17
+ require "logtail-rails/action_dispatch"
18
+ require "logtail-rails/action_view"
19
+ require "logtail-rails/active_record"
20
+
21
+ require "logtail-rails/logger"
22
+
23
+ module Logtail
24
+ module Integrations
25
+ # Module for holding *all* Rails integrations. This module does *not*
26
+ # extend {Integration} because it's dependent on {Rack::HTTPEvents}. This
27
+ # module simply disables the default HTTP request logging.
28
+ module Rails
29
+ def self.enabled?
30
+ Logtail::Integrations::Rack::HTTPEvents.enabled?
31
+ end
32
+
33
+ def self.integrate!
34
+ return false if !enabled?
35
+
36
+ ActionController.integrate!
37
+ ActionDispatch.integrate!
38
+ ActionView.integrate!
39
+ ActiveRecord.integrate!
40
+ RackLogger.integrate!
41
+ end
42
+
43
+ def self.enabled=(value)
44
+ Logtail::Integrations::Rails::ErrorEvent.enabled = value
45
+ Logtail::Integrations::Rack::HTTPContext.enabled = value
46
+ Logtail::Integrations::Rack::HTTPEvents.enabled = value
47
+ Logtail::Integrations::Rack::UserContext.enabled = value
48
+ SessionContext.enabled = value
49
+
50
+ ActionController.enabled = value
51
+ ActionView.enabled = value
52
+ ActiveRecord.enabled = value
53
+ end
54
+
55
+ # All enabled middlewares. The order is relevant. Middlewares that set
56
+ # context are added first so that context is included in subsequent log lines.
57
+ def self.middlewares
58
+ @middlewares ||= [Logtail::Integrations::Rack::HTTPContext, SessionContext, Logtail::Integrations::Rack::UserContext,
59
+ Logtail::Integrations::Rack::HTTPEvents, Logtail::Integrations::Rails::ErrorEvent].select(&:enabled?)
60
+ end
61
+ end
62
+ end
63
+ end
64
+