active_logger 0.2.0 → 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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: a1a35016af400de6d23b4b50eee7a458714a0c8b293c7bb6e58cdca42b7f099a
4
- data.tar.gz: f7803ae045906c0c07146f7d9adb9a619bbac0ace29fcc6b69aa10b783e1ad73
3
+ metadata.gz: 57d404bf8defccccc9a8f05b57bf3779a512e5ac67a095ac1c994aa487fb7ee3
4
+ data.tar.gz: df5fa3f1b23c19126d86e197240c215ea6bedd9fce870e6ad0bfdda149f6dace
5
5
  SHA512:
6
- metadata.gz: da2ed14c7c27986ac84027907af0edc17c90ed91209657ca2b5b1627e3cd079fafd647504aef5d4aae4b773e7506886f13b089c1c0f5987f0d94cc0c2db5e0dc
7
- data.tar.gz: 1007b8ecdd143e6822e0296493801768e933aa32791243d8ae1280391c57e7eccc681c112a81d9791c9fad4b068a91c9b031b2be20df79b1e0404f45a64bd0b7
6
+ metadata.gz: b49cb0632467d2174d3f3f75e3abc2e54e1215ae4ff67f7bcf111048f6e24ef533a50ab75c6cb7880b4cd8176f03d3a09e6df7ae0cf46d8e79aa45676c2763e4
7
+ data.tar.gz: 76f8ee7fa78bab1250bcece99cb1f46edaeeab33dbab9d4bcd661e411feadf74e1157f8d9f3aeffb2b0f4b95a3e226e23f6d4dcf94e35b9d34dfbc472fce7cfb
data/.rubocop.yml CHANGED
@@ -14,3 +14,7 @@ Metrics/BlockLength:
14
14
 
15
15
  Metrics/MethodLength:
16
16
  Enabled: false
17
+
18
+ # Configuration parameters: IgnoredMethods.
19
+ Metrics/AbcSize:
20
+ Max: 30
data/.rubocop_todo.yml CHANGED
@@ -1,22 +1,7 @@
1
1
  # This configuration was generated by
2
2
  # `rubocop --auto-gen-config`
3
- # on 2020-04-19 23:21:57 +0300 using RuboCop version 0.82.0.
3
+ # on 2020-04-22 16:12:47 +0300 using RuboCop version 0.82.0.
4
4
  # The point is for the user to remove these configuration records
5
5
  # one by one as the offenses are removed from the code base.
6
6
  # Note that changes in the inspected code, or installation of new
7
7
  # versions of RuboCop, may require this file to be generated again.
8
-
9
- # Offense count: 1
10
- Lint/UselessAssignment:
11
- Exclude:
12
- - 'lib/active_logger/logger.rb'
13
-
14
- # Offense count: 1
15
- # Configuration parameters: IgnoredMethods.
16
- Metrics/AbcSize:
17
- Max: 19
18
-
19
- # Offense count: 1
20
- # Configuration parameters: IgnoredMethods.
21
- Metrics/CyclomaticComplexity:
22
- Max: 7
data/Gemfile.lock CHANGED
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- active_logger (0.2.0)
4
+ active_logger (0.3.0)
5
5
  activesupport (>= 5.0.0)
6
6
 
7
7
  GEM
@@ -24,7 +24,8 @@ module ActiveLogger
24
24
  end
25
25
 
26
26
  assign_appenders = appenders.drop(1)
27
- assign_appenders.inject(appenders[0]) { |appender, acc| acc.extend(ActiveSupport::Logger.broadcast(appender)) }
27
+ loggers = assign_appenders.inject(appenders[0]) { |appender, acc| acc.extend(ActiveSupport::Logger.broadcast(appender)) }
28
+ TaggedLogging.new(loggers)
28
29
  end
29
30
 
30
31
  def loggable(type, options = {})
@@ -0,0 +1,98 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'active_support/core_ext/module/delegation'
4
+ require 'active_support/core_ext/object/blank'
5
+
6
+ module ActiveLogger
7
+ module TaggedLogging # :nodoc:
8
+ module Formatter # :nodoc:
9
+ # This method is invoked when a log event occurs.
10
+ def call(severity, timestamp, progname, msg)
11
+ super(severity, timestamp, progname, "#{tags_text}#{msg}")
12
+ end
13
+
14
+ def tagged(*tags)
15
+ new_tags = push_tags(*tags)
16
+ yield self
17
+ ensure
18
+ pop_tags(new_tags.size)
19
+ end
20
+
21
+ def push_tags(*tags)
22
+ @tags_text = nil
23
+ tags.flatten!
24
+ tags.reject!(&:blank?)
25
+ current_tags.concat tags
26
+ tags
27
+ end
28
+
29
+ def pop_tags(size = 1)
30
+ @tags_text = nil
31
+ current_tags.pop size
32
+ end
33
+
34
+ def clear_tags!
35
+ @tags_text = nil
36
+ current_tags.clear
37
+ end
38
+
39
+ def current_tags
40
+ # We use our object ID here to avoid conflicting with other instances
41
+ thread_key = @thread_key ||= "activesupport_tagged_logging_tags:#{object_id}"
42
+ Thread.current[thread_key] ||= []
43
+ end
44
+
45
+ def tags_text
46
+ @tags_text ||= begin
47
+ tags = current_tags
48
+ if tags.one?
49
+ "[#{tags[0]}] "
50
+ elsif tags.any?
51
+ tags.collect { |tag| "[#{tag}] " }.join
52
+ end
53
+ end
54
+ end
55
+ end
56
+
57
+ module LocalTagStorage # :nodoc:
58
+ attr_accessor :current_tags
59
+
60
+ def self.extended(base)
61
+ base.current_tags = []
62
+ end
63
+ end
64
+
65
+ def self.new(logger)
66
+ logger = logger.dup
67
+
68
+ logger.formatter =
69
+ if logger.formatter
70
+ logger.formatter.dup
71
+ else
72
+ # Ensure we set a default formatter so we aren't extending nil!
73
+ ActiveSupport::Logger::SimpleFormatter.new
74
+ end
75
+
76
+ logger.formatter.extend Formatter
77
+ logger.extend(self)
78
+ end
79
+
80
+ delegate :push_tags, :pop_tags, :clear_tags!, to: :formatter
81
+
82
+ def tagged(*tags)
83
+ if block_given?
84
+ formatter.tagged(*tags) { yield self }
85
+ else
86
+ logger = ActiveLogger::TaggedLogging.new(self)
87
+ logger.formatter.extend LocalTagStorage
88
+ logger.push_tags(*formatter.current_tags, *tags)
89
+ logger
90
+ end
91
+ end
92
+
93
+ def flush
94
+ clear_tags!
95
+ super if defined?(super)
96
+ end
97
+ end
98
+ end
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module ActiveLogger
4
- VERSION = '0.2.0'
4
+ VERSION = '0.3.0'
5
5
  end
data/lib/active_logger.rb CHANGED
@@ -15,4 +15,5 @@ end
15
15
  require File.dirname(__FILE__) + '/active_logger/helpers/base'
16
16
  require File.dirname(__FILE__) + '/active_logger/helpers/appender'
17
17
 
18
+ require File.dirname(__FILE__) + '/active_logger/tagged_logging'
18
19
  require File.dirname(__FILE__) + '/active_logger/logger'
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: active_logger
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.0
4
+ version: 0.3.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Yury Snegirev
@@ -49,6 +49,7 @@ files:
49
49
  - lib/active_logger/helpers/appender.rb
50
50
  - lib/active_logger/helpers/base.rb
51
51
  - lib/active_logger/logger.rb
52
+ - lib/active_logger/tagged_logging.rb
52
53
  - lib/active_logger/version.rb
53
54
  - log/.keep
54
55
  homepage: https://github.com/jurrick/active_logger