logged 0.1.1 → 0.3.0
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 +5 -5
- data/.gitlab-ci.yml +108 -0
- data/.rubocop.yml +405 -4
- data/CHANGELOG.md +42 -5
- data/Gemfile +2 -0
- data/README.md +0 -13
- data/Rakefile +2 -0
- data/lib/logged/configuration.rb +12 -6
- data/lib/logged/formatter/base.rb +2 -0
- data/lib/logged/formatter/json.rb +2 -0
- data/lib/logged/formatter/key_value.rb +2 -0
- data/lib/logged/formatter/logstash.rb +5 -1
- data/lib/logged/formatter/raw.rb +2 -0
- data/lib/logged/formatter/single_key.rb +4 -0
- data/lib/logged/level_conversion.rb +2 -0
- data/lib/logged/log_subscriber/action_controller.rb +20 -12
- data/lib/logged/log_subscriber/action_mailer.rb +21 -7
- data/lib/logged/log_subscriber/action_view.rb +5 -3
- data/lib/logged/log_subscriber/active_record.rb +3 -1
- data/lib/logged/log_subscriber/base.rb +4 -2
- data/lib/logged/logger.rb +6 -7
- data/lib/logged/rack/logger.rb +8 -6
- data/lib/logged/railtie.rb +2 -0
- data/lib/logged/subscriptions.rb +3 -3
- data/lib/logged/tagged_logging.rb +2 -0
- data/lib/logged/version.rb +3 -1
- data/lib/logged.rb +4 -2
- data/logged.gemspec +11 -6
- data/spec/Gemfile +8 -0
- metadata +89 -46
- data/.travis.yml +0 -15
data/lib/logged/formatter/raw.rb
CHANGED
@@ -1,3 +1,5 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
1
3
|
require 'uri'
|
2
4
|
require 'logged/log_subscriber/base'
|
3
5
|
|
@@ -10,17 +12,7 @@ module Logged
|
|
10
12
|
def process_action(event)
|
11
13
|
return if ignore?(event, :info)
|
12
14
|
|
13
|
-
|
14
|
-
|
15
|
-
data = {
|
16
|
-
event: event.name
|
17
|
-
}
|
18
|
-
|
19
|
-
data.merge!(extract_request(payload))
|
20
|
-
data.merge!(cached_event_data)
|
21
|
-
data.merge!(extract_path(payload))
|
22
|
-
data.merge!(extract_status(payload))
|
23
|
-
data.merge!(extract_runtimes(payload))
|
15
|
+
data = process_action_data(event)
|
24
16
|
|
25
17
|
data[:duration] = event.duration.to_f.round(2)
|
26
18
|
|
@@ -75,7 +67,7 @@ module Logged
|
|
75
67
|
|
76
68
|
{
|
77
69
|
view_runtime: view_runtime,
|
78
|
-
db_runtime:
|
70
|
+
db_runtime: db_runtime
|
79
71
|
}.reject { |_k, v| v.blank? }
|
80
72
|
end
|
81
73
|
|
@@ -91,6 +83,22 @@ module Logged
|
|
91
83
|
filter: filter
|
92
84
|
}.reject { |_k, v| v.blank? }
|
93
85
|
end
|
86
|
+
|
87
|
+
def process_action_data(event)
|
88
|
+
data = {
|
89
|
+
event: event.name
|
90
|
+
}
|
91
|
+
|
92
|
+
payload = event.payload
|
93
|
+
|
94
|
+
data.merge!(extract_request(payload))
|
95
|
+
data.merge!(cached_event_data)
|
96
|
+
data.merge!(extract_path(payload))
|
97
|
+
data.merge!(extract_status(payload))
|
98
|
+
data.merge!(extract_runtimes(payload))
|
99
|
+
|
100
|
+
data
|
101
|
+
end
|
94
102
|
end
|
95
103
|
end
|
96
104
|
end
|
@@ -1,3 +1,5 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
1
3
|
require 'logged/log_subscriber/base'
|
2
4
|
|
3
5
|
module Logged
|
@@ -49,19 +51,31 @@ module Logged
|
|
49
51
|
private
|
50
52
|
|
51
53
|
def extract_mail_deliver(payload)
|
52
|
-
data =
|
53
|
-
mailer: (payload[:mailer] || Thread.current[:logged_action_mailer_process_mailer]),
|
54
|
-
action: (payload[:action] || Thread.current[:logged_action_mailer_process_action]),
|
55
|
-
from: Array(payload[:from]).join(', '),
|
56
|
-
to: Array(payload[:to]).join(', '),
|
57
|
-
bcc: Array(payload[:bcc]).join(', ')
|
58
|
-
}
|
54
|
+
data = mail_deliver_data(payload)
|
59
55
|
|
60
56
|
Thread.current[:logged_action_mailer_process_mailer] = nil
|
61
57
|
Thread.current[:logged_action_mailer_process_action] = nil
|
62
58
|
|
63
59
|
data
|
64
60
|
end
|
61
|
+
|
62
|
+
def mail_deliver_data(payload)
|
63
|
+
{
|
64
|
+
mailer: mail_deliver_data_thread_fallback(payload, :mailer),
|
65
|
+
action: mail_deliver_data_thread_fallback(payload, :action),
|
66
|
+
from: mail_deliver_data_array(payload, :from),
|
67
|
+
to: mail_deliver_data_array(payload, :to),
|
68
|
+
bcc: mail_deliver_data_array(payload, :bcc)
|
69
|
+
}
|
70
|
+
end
|
71
|
+
|
72
|
+
def mail_deliver_data_thread_fallback(payload, key)
|
73
|
+
payload[key] || Thread.current["logged_action_mailer_process_#{key}".to_sym]
|
74
|
+
end
|
75
|
+
|
76
|
+
def mail_deliver_data_array(payload, key)
|
77
|
+
Array(payload[key]).join(', ')
|
78
|
+
end
|
65
79
|
end
|
66
80
|
end
|
67
81
|
end
|
@@ -1,3 +1,5 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
1
3
|
require 'action_view/log_subscriber'
|
2
4
|
require 'logged/log_subscriber/base'
|
3
5
|
|
@@ -21,8 +23,8 @@ module Logged
|
|
21
23
|
|
22
24
|
debug(event, data)
|
23
25
|
end
|
24
|
-
|
25
|
-
|
26
|
+
alias render_partial render_template
|
27
|
+
alias render_collection render_template
|
26
28
|
|
27
29
|
protected
|
28
30
|
|
@@ -35,7 +37,7 @@ module Logged
|
|
35
37
|
end
|
36
38
|
|
37
39
|
def rails_root
|
38
|
-
@
|
40
|
+
@rails_root ||= "#{::Rails.root}/"
|
39
41
|
end
|
40
42
|
end
|
41
43
|
end
|
@@ -1,3 +1,5 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
1
3
|
require 'active_record/log_subscriber'
|
2
4
|
require 'logged/log_subscriber/base'
|
3
5
|
|
@@ -6,7 +8,7 @@ module Logged
|
|
6
8
|
# Log subscriber for ActiveRecord events
|
7
9
|
class ActiveRecord < Base
|
8
10
|
# This query types will be ignored
|
9
|
-
IGNORE_PAYLOAD_NAMES = %w
|
11
|
+
IGNORE_PAYLOAD_NAMES = %w[SCHEMA EXPLAIN].freeze
|
10
12
|
|
11
13
|
component :active_record
|
12
14
|
|
@@ -1,3 +1,5 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
1
3
|
require 'active_support/log_subscriber'
|
2
4
|
|
3
5
|
module Logged
|
@@ -16,7 +18,7 @@ module Logged
|
|
16
18
|
|
17
19
|
private
|
18
20
|
|
19
|
-
%w
|
21
|
+
%w[info debug warn error fatal unknown].each do |level|
|
20
22
|
class_eval <<-METHOD, __FILE__, __LINE__ + 1
|
21
23
|
def #{level}(event, progname = nil, &block)
|
22
24
|
return unless logger
|
@@ -33,7 +35,7 @@ module Logged
|
|
33
35
|
end
|
34
36
|
|
35
37
|
def component
|
36
|
-
self.class.instance_variable_get(
|
38
|
+
self.class.instance_variable_get(:@component)
|
37
39
|
end
|
38
40
|
|
39
41
|
def ignore?(event, log_level = nil)
|
data/lib/logged/logger.rb
CHANGED
@@ -1,3 +1,5 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
1
3
|
require 'logger'
|
2
4
|
require 'logged/tagged_logging'
|
3
5
|
|
@@ -7,6 +9,7 @@ module Logged
|
|
7
9
|
include TaggedLogging
|
8
10
|
|
9
11
|
attr_reader :loggers, :component
|
12
|
+
attr_writer :enabled
|
10
13
|
|
11
14
|
def initialize(loggers, component, formatter)
|
12
15
|
@loggers = loggers
|
@@ -33,9 +36,9 @@ module Logged
|
|
33
36
|
add_to_logger(level, event, data, logger, options)
|
34
37
|
end
|
35
38
|
end
|
36
|
-
|
39
|
+
alias log add
|
37
40
|
|
38
|
-
%w
|
41
|
+
%w[info debug warn error fatal unknown].each do |level|
|
39
42
|
class_eval <<-METHOD, __FILE__, __LINE__ + 1
|
40
43
|
def #{level}?
|
41
44
|
@loggers.keys.any? { |l| l.#{level}? }
|
@@ -48,7 +51,7 @@ module Logged
|
|
48
51
|
end
|
49
52
|
|
50
53
|
def close
|
51
|
-
@loggers.
|
54
|
+
@loggers.each_key do |logger|
|
52
55
|
logger.close if logger.respond_to?(:close)
|
53
56
|
end
|
54
57
|
end
|
@@ -63,10 +66,6 @@ module Logged
|
|
63
66
|
@enabled
|
64
67
|
end
|
65
68
|
|
66
|
-
def enabled=(enable)
|
67
|
-
@enabled = !!enable
|
68
|
-
end
|
69
|
-
|
70
69
|
def enable!
|
71
70
|
self.enabled = true
|
72
71
|
end
|
data/lib/logged/rack/logger.rb
CHANGED
@@ -1,3 +1,5 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
1
3
|
require 'active_support'
|
2
4
|
require 'action_dispatch'
|
3
5
|
|
@@ -14,10 +16,10 @@ module Logged
|
|
14
16
|
|
15
17
|
request = ActionDispatch::Request.new(env)
|
16
18
|
|
17
|
-
if loggers.
|
18
|
-
loggers_tagged(loggers, request) { @app.call(env) }
|
19
|
-
else
|
19
|
+
if loggers.empty?
|
20
20
|
@app.call(env)
|
21
|
+
else
|
22
|
+
loggers_tagged(loggers, request) { @app.call(env) }
|
21
23
|
end
|
22
24
|
ensure
|
23
25
|
Thread.current[:logged_request_env] = nil
|
@@ -33,10 +35,10 @@ module Logged
|
|
33
35
|
logger = loggers.shift
|
34
36
|
tags = tags_for_component(logger.component, request)
|
35
37
|
|
36
|
-
if loggers.
|
37
|
-
tagged_block(logger, tags
|
38
|
+
if loggers.empty?
|
39
|
+
tagged_block(logger, tags, &block)
|
38
40
|
else
|
39
|
-
tagged_block(logger, tags) { block
|
41
|
+
tagged_block(logger, tags) { loggers_tagged(loggers, request, &block) }
|
40
42
|
end
|
41
43
|
end
|
42
44
|
|
data/lib/logged/railtie.rb
CHANGED
data/lib/logged/subscriptions.rb
CHANGED
@@ -1,3 +1,5 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
1
3
|
module Logged
|
2
4
|
# Railtie for logged
|
3
5
|
module Subscriptions
|
@@ -31,9 +33,7 @@ module Logged
|
|
31
33
|
|
32
34
|
events.each do |event|
|
33
35
|
ActiveSupport::Notifications.notifier.listeners_for("#{event}.#{component}").each do |listener|
|
34
|
-
if listener.instance_variable_get(
|
35
|
-
ActiveSupport::Notifications.unsubscribe listener
|
36
|
-
end
|
36
|
+
ActiveSupport::Notifications.unsubscribe listener if listener.instance_variable_get(:@delegate) == subscriber
|
37
37
|
end
|
38
38
|
end
|
39
39
|
end
|
data/lib/logged/version.rb
CHANGED
data/lib/logged.rb
CHANGED
@@ -1,3 +1,5 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
1
3
|
require 'logged/version'
|
2
4
|
require 'logged/level_conversion'
|
3
5
|
require 'logged/logger'
|
@@ -16,7 +18,7 @@ module Logged
|
|
16
18
|
extend Logged::Subscriptions
|
17
19
|
|
18
20
|
# special keys which not represent a component
|
19
|
-
CONFIG_KEYS = Configuration::DEFAULT_VALUES.keys + [
|
21
|
+
CONFIG_KEYS = Configuration::DEFAULT_VALUES.keys + %i[loggers disable_rails_logging]
|
20
22
|
|
21
23
|
mattr_accessor :app, :config
|
22
24
|
|
@@ -61,7 +63,7 @@ module Logged
|
|
61
63
|
|
62
64
|
@component_loggers[key] = Logger.new(loggers, component, formatter)
|
63
65
|
end
|
64
|
-
|
66
|
+
alias [] logger_by_component
|
65
67
|
|
66
68
|
# loggers for component
|
67
69
|
def loggers_for(component)
|
data/logged.gemspec
CHANGED
@@ -1,17 +1,19 @@
|
|
1
1
|
# coding: utf-8
|
2
|
+
# frozen_string_literal: true
|
3
|
+
|
2
4
|
lib = File.expand_path('../lib', __FILE__)
|
3
5
|
$LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
|
4
6
|
require 'logged/version'
|
5
7
|
|
6
8
|
Gem::Specification.new do |spec|
|
7
|
-
rails_version = '>=
|
9
|
+
rails_version = '>= 5.0', '< 8.0'
|
8
10
|
|
9
11
|
spec.name = 'logged'
|
10
12
|
spec.version = Logged::VERSION
|
11
13
|
spec.authors = ['Florian Schwab']
|
12
14
|
spec.email = ['me@ydkn.de']
|
13
|
-
spec.summary =
|
14
|
-
spec.homepage = 'https://
|
15
|
+
spec.summary = 'Better logging for rails'
|
16
|
+
spec.homepage = 'https://gitlab.com/ydkn/logged'
|
15
17
|
spec.license = 'MIT'
|
16
18
|
|
17
19
|
spec.files = `git ls-files -z`.split("\x0")
|
@@ -19,9 +21,12 @@ Gem::Specification.new do |spec|
|
|
19
21
|
spec.test_files = spec.files.grep(%r{^(test|spec|features)/})
|
20
22
|
spec.require_paths = ['lib']
|
21
23
|
|
22
|
-
spec.add_development_dependency 'bundler'
|
23
|
-
spec.add_development_dependency 'rake'
|
24
|
-
spec.add_development_dependency 'rspec'
|
24
|
+
spec.add_development_dependency 'bundler'
|
25
|
+
spec.add_development_dependency 'rake'
|
26
|
+
spec.add_development_dependency 'rspec'
|
27
|
+
spec.add_development_dependency 'rubocop'
|
28
|
+
spec.add_development_dependency 'rubocop-performance'
|
29
|
+
spec.add_development_dependency 'rubocop-rails'
|
25
30
|
spec.add_development_dependency 'rails', rails_version
|
26
31
|
spec.add_development_dependency 'actionpack', rails_version
|
27
32
|
spec.add_development_dependency 'actionview', rails_version
|