logtail-rails 0.2.3 → 0.2.5
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.github/workflows/main.yml +39 -18
- data/README.md +1 -1
- data/example-project/Gemfile +4 -4
- data/example-project/config/application.rb +2 -2
- data/example-project/config/initializers/{filter_parameter_logging.rb → filter_logging.rb} +5 -0
- data/gemfiles/rails-7.1.gemfile +12 -0
- data/gemfiles/rails-edge.gemfile +12 -0
- data/lib/logtail-rails/action_controller/log_subscriber.rb +1 -0
- data/lib/logtail-rails/action_view/log_subscriber/logtail_log_subscriber.rb +13 -0
- data/lib/logtail-rails/active_support_log_subscriber.rb +5 -0
- data/lib/logtail-rails/logger.rb +29 -0
- data/lib/logtail-rails/version.rb +1 -1
- metadata +6 -4
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 97d938a7a8be17f755842dcf6625ea5cef8aee115de0e81a9a8d33722a16d2da
|
4
|
+
data.tar.gz: fecfdfab18c9b31582a52987e5271c012707bc7a3cdcb628a261a204a4933c74
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: a1f6e1992c6d09df1df6649984d52d655671e4eb7bf031294e9e3eaf2edf7fc0cd5ae403ec42de01440e66fac99c36059b014207e56be0c2d072dd51a544e53a
|
7
|
+
data.tar.gz: 63c827e685b29dce41f1c175972ef2eaf2e803ce7fedb771207fc5c3bc07e12c6edd7f9d3e53e32e71b9410d58de43ef3aa68b0d899b1434d1afffb198922995
|
data/.github/workflows/main.yml
CHANGED
@@ -2,7 +2,6 @@ name: build
|
|
2
2
|
|
3
3
|
on:
|
4
4
|
push:
|
5
|
-
pull_request:
|
6
5
|
schedule:
|
7
6
|
- cron: '20 5 * * 1'
|
8
7
|
workflow_dispatch:
|
@@ -16,17 +15,19 @@ jobs:
|
|
16
15
|
|
17
16
|
matrix:
|
18
17
|
ruby-version:
|
19
|
-
- 3.2
|
20
|
-
- 3.1
|
21
|
-
- 3.0
|
22
|
-
- 2.7
|
23
|
-
- 2.6
|
24
|
-
- 2.5
|
18
|
+
- 3.2
|
19
|
+
- 3.1
|
20
|
+
- 3.0
|
21
|
+
- 2.7
|
22
|
+
- 2.6
|
23
|
+
- 2.5
|
25
24
|
- jruby-9.4.3.0
|
26
25
|
- jruby-9.2.14.0
|
27
26
|
- truffleruby-23.0.0
|
28
27
|
- truffleruby-22.1.0
|
29
28
|
gemfile:
|
29
|
+
- rails-edge
|
30
|
+
- rails-7.1
|
30
31
|
- rails-7.0
|
31
32
|
- rails-6.1
|
32
33
|
- rails-6.0
|
@@ -34,19 +35,39 @@ jobs:
|
|
34
35
|
- rails-5.1
|
35
36
|
- rails-5.0
|
36
37
|
exclude:
|
38
|
+
- gemfile: rails-edge
|
39
|
+
ruby-version: 2.6
|
40
|
+
- gemfile: rails-edge
|
41
|
+
ruby-version: 2.5
|
42
|
+
- gemfile: rails-edge
|
43
|
+
ruby-version: jruby-9.4.3.0
|
44
|
+
- gemfile: rails-edge
|
45
|
+
ruby-version: jruby-9.2.14.0
|
46
|
+
- gemfile: rails-edge
|
47
|
+
ruby-version: truffleruby-23.0.0
|
48
|
+
|
49
|
+
- gemfile: rails-7.1
|
50
|
+
ruby-version: 2.6
|
51
|
+
- gemfile: rails-7.1
|
52
|
+
ruby-version: 2.5
|
53
|
+
- gemfile: rails-7.1
|
54
|
+
ruby-version: jruby-9.4.3.0
|
55
|
+
- gemfile: rails-7.1
|
56
|
+
ruby-version: jruby-9.2.14.0
|
57
|
+
|
37
58
|
- gemfile: rails-7.0
|
38
|
-
ruby-version: 2.6
|
59
|
+
ruby-version: 2.6
|
39
60
|
- gemfile: rails-7.0
|
40
|
-
ruby-version: 2.5
|
61
|
+
ruby-version: 2.5
|
41
62
|
- gemfile: rails-7.0
|
42
63
|
ruby-version: jruby-9.2.14.0
|
43
64
|
|
44
65
|
- gemfile: rails-5.2
|
45
|
-
ruby-version: 3.2
|
66
|
+
ruby-version: 3.2
|
46
67
|
- gemfile: rails-5.2
|
47
|
-
ruby-version: 3.1
|
68
|
+
ruby-version: 3.1
|
48
69
|
- gemfile: rails-5.2
|
49
|
-
ruby-version: 3.0
|
70
|
+
ruby-version: 3.0
|
50
71
|
- gemfile: rails-5.2
|
51
72
|
ruby-version: jruby-9.4.3.0
|
52
73
|
- gemfile: rails-5.2
|
@@ -55,11 +76,11 @@ jobs:
|
|
55
76
|
ruby-version: truffleruby-23.0.0
|
56
77
|
|
57
78
|
- gemfile: rails-5.1
|
58
|
-
ruby-version: 3.2
|
79
|
+
ruby-version: 3.2
|
59
80
|
- gemfile: rails-5.1
|
60
|
-
ruby-version: 3.1
|
81
|
+
ruby-version: 3.1
|
61
82
|
- gemfile: rails-5.1
|
62
|
-
ruby-version: 3.0
|
83
|
+
ruby-version: 3.0
|
63
84
|
- gemfile: rails-5.1
|
64
85
|
ruby-version: jruby-9.4.3.0
|
65
86
|
- gemfile: rails-5.1
|
@@ -68,11 +89,11 @@ jobs:
|
|
68
89
|
ruby-version: truffleruby-22.1.0
|
69
90
|
|
70
91
|
- gemfile: rails-5.0
|
71
|
-
ruby-version: 3.2
|
92
|
+
ruby-version: 3.2
|
72
93
|
- gemfile: rails-5.0
|
73
|
-
ruby-version: 3.1
|
94
|
+
ruby-version: 3.1
|
74
95
|
- gemfile: rails-5.0
|
75
|
-
ruby-version: 3.0
|
96
|
+
ruby-version: 3.0
|
76
97
|
- gemfile: rails-5.0
|
77
98
|
ruby-version: jruby-9.4.3.0
|
78
99
|
- gemfile: rails-5.0
|
data/README.md
CHANGED
@@ -4,7 +4,7 @@
|
|
4
4
|
|
5
5
|
[![ISC License](https://img.shields.io/badge/license-ISC-ff69b4.svg)](LICENSE.md)
|
6
6
|
[![Gem Version](https://badge.fury.io/rb/logtail-rails.svg)](https://badge.fury.io/rb/logtail-rails)
|
7
|
-
[![Build Status](https://github.com/logtail/logtail-ruby-rails/workflows/
|
7
|
+
[![Build Status](https://github.com/logtail/logtail-ruby-rails/actions/workflows/main.yml/badge.svg)](https://github.com/logtail/logtail-ruby-rails/actions/workflows/main.yml)
|
8
8
|
|
9
9
|
Collect logs directly from your Ruby on Rails projects. To start logging Ruby projects explore the [Logtail Ruby library](https://github.com/logtail/logtail-ruby).
|
10
10
|
|
data/example-project/Gemfile
CHANGED
@@ -1,10 +1,10 @@
|
|
1
1
|
source "https://rubygems.org"
|
2
2
|
git_source(:github) { |repo| "https://github.com/#{repo}.git" }
|
3
3
|
|
4
|
-
ruby "3.
|
4
|
+
ruby "3.2.2"
|
5
5
|
|
6
6
|
# Bundle edge Rails instead: gem "rails", github: "rails/rails", branch: "main"
|
7
|
-
gem "rails", "~> 7.0
|
7
|
+
gem "rails", "~> 7.1.0"
|
8
8
|
|
9
9
|
# The original asset pipeline for Rails [https://github.com/rails/sprockets-rails]
|
10
10
|
gem "sprockets-rails"
|
@@ -13,7 +13,7 @@ gem "sprockets-rails"
|
|
13
13
|
gem "sqlite3", "~> 1.4"
|
14
14
|
|
15
15
|
# Use the Puma web server [https://github.com/puma/puma]
|
16
|
-
gem "puma", "~>
|
16
|
+
gem "puma", "~> 6.0"
|
17
17
|
|
18
18
|
# Use JavaScript with ESM import maps [https://github.com/rails/importmap-rails]
|
19
19
|
gem "importmap-rails"
|
@@ -71,4 +71,4 @@ group :test do
|
|
71
71
|
gem "webdrivers"
|
72
72
|
end
|
73
73
|
|
74
|
-
gem "logtail-rails", "~> 0.2.
|
74
|
+
gem "logtail-rails", "~> 0.2.5"
|
@@ -9,7 +9,7 @@ Bundler.require(*Rails.groups)
|
|
9
9
|
module ExampleProject
|
10
10
|
class Application < Rails::Application
|
11
11
|
# Initialize configuration defaults for originally generated Rails version.
|
12
|
-
config.load_defaults 7.
|
12
|
+
config.load_defaults 7.1
|
13
13
|
|
14
14
|
# Configuration for the application, engines, and railties goes here.
|
15
15
|
#
|
@@ -19,6 +19,6 @@ module ExampleProject
|
|
19
19
|
# config.time_zone = "Central Time (US & Canada)"
|
20
20
|
# config.eager_load_paths << Rails.root.join("extras")
|
21
21
|
|
22
|
-
config.logger = Logtail::Logger.create_default_logger("
|
22
|
+
config.logger = Logtail::Logger.create_default_logger("YhLXLk5djXYbxK16moYEhjeu")
|
23
23
|
end
|
24
24
|
end
|
@@ -6,3 +6,8 @@
|
|
6
6
|
Rails.application.config.filter_parameters += [
|
7
7
|
:passw, :secret, :token, :_key, :crypt, :salt, :certificate, :otp, :ssn
|
8
8
|
]
|
9
|
+
|
10
|
+
# Configure HTTP headers to be filtered from the log. Use this to limit dissemination of sensitive information.
|
11
|
+
Logtail::Integrations::Rack::HTTPEvents.http_header_filters = [
|
12
|
+
:authorization, :proxy_authorization, :cookie
|
13
|
+
]
|
@@ -25,6 +25,7 @@ module Logtail
|
|
25
25
|
)
|
26
26
|
end
|
27
27
|
end
|
28
|
+
subscribe_log_level :render_template, :info if defined?(subscribe_log_level)
|
28
29
|
|
29
30
|
def render_partial(event)
|
30
31
|
return true if silence?
|
@@ -66,6 +67,18 @@ module Logtail
|
|
66
67
|
end
|
67
68
|
end
|
68
69
|
|
70
|
+
def self.attach_to(*)
|
71
|
+
super
|
72
|
+
|
73
|
+
if ::Rails::VERSION::MAJOR > 7 || ::Rails::VERSION::MAJOR == 7 && ::Rails::VERSION::MINOR >= 1
|
74
|
+
# Clean extra listeners subscribed in parent's attach_to method
|
75
|
+
::ActiveSupport::Notifications.notifier.listeners_for("render_template.action_view")
|
76
|
+
.concat(::ActiveSupport::Notifications.notifier.listeners_for("render_layout.action_view")).flatten
|
77
|
+
.filter { |listener| listener.delegate.class == ::ActionView::LogSubscriber::Start }
|
78
|
+
.each { |listener| ActiveSupport::Notifications.unsubscribe(listener) }
|
79
|
+
end
|
80
|
+
end
|
81
|
+
|
69
82
|
private
|
70
83
|
def log_rendering_start(*args)
|
71
84
|
# Consolidates 2 template rendering events into 1. We don't need 2 events for
|
@@ -18,6 +18,11 @@ module Logtail
|
|
18
18
|
# I don't know why this has to be so complicated, but it is. This code was taken from
|
19
19
|
# lograge :/
|
20
20
|
def unsubscribe!(component, type)
|
21
|
+
if defined?(type.detach_from)
|
22
|
+
type.detach_from(component)
|
23
|
+
return
|
24
|
+
end
|
25
|
+
|
21
26
|
subscriber = find(component, type)
|
22
27
|
|
23
28
|
if !subscriber
|
data/lib/logtail-rails/logger.rb
CHANGED
@@ -16,6 +16,35 @@ module Logtail
|
|
16
16
|
include ::LoggerSilence
|
17
17
|
end
|
18
18
|
|
19
|
+
# Logtail::Logger also works as ActiveSupport::BroadcastLogger
|
20
|
+
def is_a?(clazz)
|
21
|
+
return true if clazz == ::ActiveSupport::BroadcastLogger
|
22
|
+
|
23
|
+
super(clazz)
|
24
|
+
end
|
25
|
+
|
26
|
+
def broadcasts
|
27
|
+
[self] + @extra_loggers
|
28
|
+
end
|
29
|
+
|
30
|
+
def broadcast_to(*io_devices_and_loggers)
|
31
|
+
io_devices_and_loggers.each do |io_device_or_logger|
|
32
|
+
extra_logger = is_a_logger?(io_device_or_logger) ? io_device_or_logger : self.class.new(io_device_or_logger)
|
33
|
+
|
34
|
+
@extra_loggers << extra_logger
|
35
|
+
end
|
36
|
+
end
|
37
|
+
|
38
|
+
def stop_broadcasting_to(io_device_or_logger)
|
39
|
+
if is_a_logger?(io_device_or_logger)
|
40
|
+
@extra_loggers.delete(logger)
|
41
|
+
|
42
|
+
return
|
43
|
+
end
|
44
|
+
|
45
|
+
@extra_loggers = @extra_loggers.reject { |logger| ::ActiveSupport::Logger.logger_outputs_to?(logger, io_device_or_logger) }
|
46
|
+
end
|
47
|
+
|
19
48
|
def self.create_logger(*io_devices_and_loggers)
|
20
49
|
logger = Logtail::Logger.new(*io_devices_and_loggers)
|
21
50
|
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: logtail-rails
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.2.
|
4
|
+
version: 0.2.5
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Better Stack
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2023-
|
11
|
+
date: 2023-10-24 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: logtail
|
@@ -266,7 +266,7 @@ files:
|
|
266
266
|
- example-project/config/importmap.rb
|
267
267
|
- example-project/config/initializers/assets.rb
|
268
268
|
- example-project/config/initializers/content_security_policy.rb
|
269
|
-
- example-project/config/initializers/
|
269
|
+
- example-project/config/initializers/filter_logging.rb
|
270
270
|
- example-project/config/initializers/inflections.rb
|
271
271
|
- example-project/config/initializers/permissions_policy.rb
|
272
272
|
- example-project/config/locales/en.yml
|
@@ -306,6 +306,8 @@ files:
|
|
306
306
|
- gemfiles/rails-6.0.gemfile
|
307
307
|
- gemfiles/rails-6.1.gemfile
|
308
308
|
- gemfiles/rails-7.0.gemfile
|
309
|
+
- gemfiles/rails-7.1.gemfile
|
310
|
+
- gemfiles/rails-edge.gemfile
|
309
311
|
- lib/logtail-rails.rb
|
310
312
|
- lib/logtail-rails/action_controller.rb
|
311
313
|
- lib/logtail-rails/action_controller/log_subscriber.rb
|
@@ -359,7 +361,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
359
361
|
- !ruby/object:Gem::Version
|
360
362
|
version: '0'
|
361
363
|
requirements: []
|
362
|
-
rubygems_version: 3.
|
364
|
+
rubygems_version: 3.3.7
|
363
365
|
signing_key:
|
364
366
|
specification_version: 4
|
365
367
|
summary: Better Stack Rails integration
|