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.
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'logged/formatter/base'
2
4
 
3
5
  module Logged
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'logged/formatter/base'
2
4
 
3
5
  module Logged
@@ -5,6 +7,8 @@ module Logged
5
7
  # Single-Key formatter for logged
6
8
  class SingleKey < Base
7
9
  def initialize(key)
10
+ super()
11
+
8
12
  @key = key
9
13
  end
10
14
 
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module Logged
2
4
  # Conversion between log level symbols and integers
3
5
  module LevelConversion
@@ -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
- payload = event.payload
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: 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
- alias_method :render_partial, :render_template
25
- alias_method :render_collection, :render_template
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
- @root ||= "#{::Rails.root}/"
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( SCHEMA EXPLAIN )
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(info debug warn error fatal unknown).each do |level|
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('@component')
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
- alias_method :log, :add
39
+ alias log add
37
40
 
38
- %w(info debug warn error fatal unknown).each do |level|
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.keys.each do |logger|
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
@@ -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.length > 0
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.length > 0
37
- tagged_block(logger, tags) { loggers_tagged(loggers, request, &block) }
38
+ if loggers.empty?
39
+ tagged_block(logger, tags, &block)
38
40
  else
39
- tagged_block(logger, tags) { block.call }
41
+ tagged_block(logger, tags) { loggers_tagged(loggers, request, &block) }
40
42
  end
41
43
  end
42
44
 
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'rails/railtie'
2
4
  require 'logged/configuration'
3
5
 
@@ -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('@delegate') == subscriber
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
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module Logged
2
4
  # Tagged logging support
3
5
  module TaggedLogging
@@ -1,4 +1,6 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module Logged
2
4
  # Version
3
- VERSION = '0.1.1'
5
+ VERSION = '0.3.0'
4
6
  end
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 + [:loggers, :disable_rails_logging]
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
- alias_method :'[]', :logger_by_component
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 = '>= 4.0', '< 5.1'
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 = %q(Better logging for rails)
14
- spec.homepage = 'https://github.com/ydkn/logged'
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', '~> 1.12'
23
- spec.add_development_dependency 'rake', '~> 10.5'
24
- spec.add_development_dependency 'rspec', '~> 3.5'
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
data/spec/Gemfile ADDED
@@ -0,0 +1,8 @@
1
+ # frozen_string_literal: true
2
+
3
+ source 'https://rubygems.org'
4
+
5
+ # Specify your gem's dependencies in logged.gemspec
6
+ gemspec path: '..'
7
+
8
+ gem 'railties', "~> #{ENV.fetch('RSPEC_RAILS_VERSION')}"